0

首先让我先说我不是普通的 Android 用户。我们的产品适用于 iOS 和 Android,我在 iOS 方面有更多经验。我正在寻找有关某个功能的适当“Android 体验”以及如何实现它的建议。

我们有一个应用程序,它会向用户呈现全天都会发生的许多“事件”。用户可以要求在这些事件中的一个或多个发生前几分钟收到通知。我需要关于如何将这些通知呈现给用户的建议。

我想我了解如何使用 AlertManager 在事件即将发生时通知 Activity 或 BroadcastReceiver 。问题是接下来应该发生什么。

然后我们可以使用 Android 的通知系统(使用 NotificationCompat.Builder)将通知输入到系统中。问题是我认为它太微妙了。这些是时间敏感事件,当这种情况发生时,用户需要将注意力吸引到设备上。

另一种可能性是在事件即将发生时向用户显示警报对话框(可能还有声音)。当我们的应用程序在前台时,我有这个工作。但是,当应用程序处于后台(或可能已停止)时,理想情况下,我希望将警报放在任何现有活动的活动上。这似乎无法正常工作。相反,我的应用程序的主要活动似乎被带到了前面,然后警报活动显示在其顶部,但背景为黑色(尽管我为警报活动使用了透明主题)。

这是一些代码:

private void createAlarm( )
{
    Intent intent = new Intent( getApplicationContext(), AlarmDisplayer.class );
    PendingIntent pendingIntent = PendingIntent.getActivity( getApplicationContext(), 3333, intent, 0 );

    //getting current time and add 5 seconds in it
    Calendar cal = Calendar.getInstance();
    cal.add( Calendar.SECOND, 10 );
    //registering our pending intent with alarmmanager
    AlarmManager alarmMgr = (AlarmManager) getSystemService( ALARM_SERVICE );
    alarmMgr.set( AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent );
}


public class AlarmDisplayer extends Activity implements OnClickListener
{
    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );

        AlertDialog.Builder builder = new AlertDialog.Builder( this );
        builder.setMessage( "Alert received xxx" );
        builder.setNeutralButton( "OK", this );
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    public void onClick( DialogInterface dialog, int which )
    {
        this.finish();
    }
}

从清单:

    <activity
        android:name="com.southernstars.skysafari.AlarmDisplayer"
        android:theme="@style/Theme.Transparent"
        android:configChanges="orientation"
        android:label="" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

或者也许我们应该在 Android 上以其他方式执行此操作。一种模型可能是时钟应用程序中的闹钟。当闹铃响起时,整个屏幕都被闹铃占据。这可能有点笨拙,但有可能。

关于我们应该做什么以及如何做的任何想法?

账单

4

3 回答 3

0

我会通过显示一个对话框来解决这个问题(这样你就不会完全阻止用户查看,而只是一条需要立即注意的消息)理想情况下,对话框应该填充当前正在发出的警报的相应信息。基本上,当计时器关闭时,向广播接收器发送消息,然后显示您的对话框。您的对话框应该有 2 个按钮:

  1. 转到您的主要活动以显示更多信息
  2. 暂停/忽略/取消。

还要确保您收到您的消息...将您的广播接收器设置为以最强大的方式注册,而不是以编程方式注册。

于 2013-04-06T00:02:24.450 回答
0

我会使用通知系统并使用文本到语音来提醒用户有新事件,他们可以从通知栏中获得更多详细信息。

于 2013-04-30T01:21:22.947 回答
0

我认为您可以将 AlertDialog 与属于控制您的广播的服务的上下文一起使用。这在架构视图中也可能很干净。

于 2013-06-08T08:50:59.477 回答