首先让我先说我不是普通的 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 上以其他方式执行此操作。一种模型可能是时钟应用程序中的闹钟。当闹铃响起时,整个屏幕都被闹铃占据。这可能有点笨拙,但有可能。
关于我们应该做什么以及如何做的任何想法?
账单