首先让我在这篇文章前言,说我不是一个普通的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上采用其他方式。一个型号可能是时钟应用程序中的警报。当闹钟响起时,整个屏幕将被闹钟接管。这可能有点沉重,但这是可能的。
对我们应该做什么以及如何做的任何想法?
比尔
答案 0 :(得分:0)
我会通过显示一个对话框(这样你不会完全阻止用户视图,而只是一个需要立即关注的消息)来实现这一点。理想情况下,对话框应填充当前警报的相应信息,即将关闭。基本上,当计时器关闭时,向广播接收器发送消息,然后显示对话框。您的对话框应该有2个按钮:
另外要确保您收到消息...将广播接收器设置为以编程方式注册, NOT 以编程方式注册。
答案 1 :(得分:0)
我会选择通知系统并使用文字转语音提醒用户有新事件,他们可以从通知栏中获取更多详细信息。
答案 2 :(得分:0)
我认为您可以将AlertDialog与属于控制广播的服务的Context一起使用。这在建筑视图中也许是干净的。