Android 报警应用程序中需要帮助
我是Android新手。我正在尝试开发一个闹钟应用程序,它实际上是一个会说话的时钟。我只希望时钟使用TextToSpeechAPI,在闹钟一响,就说出问候语和当前时间。演讲部分结束了。现在我想实现报警功能。但最初我只是想在10秒后展示一个祝酒词,以检查我的课程是否正常工作。我没有得到想要的回应,我不知道为什么?以下是课程 主类ACLock活动Android 报警应用程序中需要帮助,android,service,broadcastreceiver,alarmmanager,android-pendingintent,Android,Service,Broadcastreceiver,Alarmmanager,Android Pendingintent,我是Android新手。我正在尝试开发一个闹钟应用程序,它实际上是一个会说话的时钟。我只希望时钟使用TextToSpeechAPI,在闹钟一响,就说出问候语和当前时间。演讲部分结束了。现在我想实现报警功能。但最初我只是想在10秒后展示一个祝酒词,以检查我的课程是否正常工作。我没有得到想要的回应,我不知道为什么?以下是课程 主类ACLock活动 public class aClockActivity extends Activity { /** Called when the activi
public class aClockActivity extends Activity {
/** Called when the activity is first created. */
private PendingIntent mAlarmSender;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button)findViewById(R.id.buttonOn);
button1.setOnClickListener(mStartAlarmListener);
Button button2 = (Button)findViewById(R.id.buttonOff);
button2.setOnClickListener(mStopAlarmListener);
}
private OnClickListener mStartAlarmListener = new OnClickListener() {
public void onClick(View v) {
// We want the alarm to go off 30 seconds from now.
//long firstTime = SystemClock.elapsedRealtime();
EditText Ehour = (EditText) findViewById(R.id.hour);
EditText Eminute = (EditText) findViewById(R.id.minute);
CharSequence CharHour = Ehour.getText();
CharSequence CharMinute = Eminute.getText();
int hour = Integer.parseInt(CharHour.toString());
int minute = Integer.parseInt(CharMinute.toString());
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
// calendar.add(Calendar.MINUTE, 1);
cal.add(Calendar.SECOND, 10);
mAlarmSender = PendingIntent.getBroadcast(aClockActivity.this,
0, new Intent(aClockActivity.this, Alarm_Broadcast.class), 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), mAlarmSender);
// Tell the user about what we did.
Toast.makeText(aClockActivity.this, "The Alarm is Set",
Toast.LENGTH_LONG).show();
}
};
private OnClickListener mStopAlarmListener = new OnClickListener() {
public void onClick(View v) {
// And cancel the alarm.
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(mAlarmSender);
// Tell the user about what we did.
Toast.makeText(aClockActivity.this, "Setting off the alarm",
Toast.LENGTH_LONG).show();
}
};
二级报警广播
public class Alarm_Broadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();
}
}
注意:只需忽略OnClick()方法中的Edittext部分,稍后我将使用它
除了上述问题外,我还想问几个问题
1) 我如何实现此应用程序,以便在设置闹钟时,它可以作为原始AlarmClock运行的通知栏中的服务实际运行。因此,即使应用程序已关闭,它仍在运行,以便在正确的时间调用报警消息
2) 如果AlarmManager调用扩展服务或BroadcastReceiver的类,则我无法显示任何对话框或可以使用TTS
3) 如果有人给我实现这个应用程序的想法,我会很感激,我相信有很多专家都会经历同样的应用程序
问候
奥马尔
我如何实现此应用程序,以便在设置闹钟时,它可以作为原始AlarmClock运行的通知栏中的服务实际运行。因此,即使应用程序已关闭,它仍在运行,以便在正确的时间调用报警消息
不要这样做。让一个服务24小时不间断地留在内存中看时钟是对内存的浪费,会让你受到任务杀手的攻击,降低你的应用程序的效率。请坚持使用AlarmManager
如果AlarmManager调用扩展服务或BroadcastReceiver的类,则我无法显示任何对话框或可以使用TTS
启动一个活动,可能是一个以对话为主题的活动
我如何实现此应用程序,以便在设置闹钟时,它可以作为原始AlarmClock运行的通知栏中的服务实际运行。因此,即使应用程序已关闭,它仍在运行,以便在正确的时间调用报警消息
不要这样做。让一个服务24小时不间断地留在内存中看时钟是对内存的浪费,会让你受到任务杀手的攻击,降低你的应用程序的效率。请坚持使用AlarmManager
如果AlarmManager调用扩展服务或BroadcastReceiver的类,则我无法显示任何对话框或可以使用TTS
启动一个活动,可能是一个以对话为主题的活动。以下是我在闹钟应用程序中使用的一些示例代码,希望对您有所帮助 要设置警报,请执行以下操作: 私有void setAlarm(){ 这适用于onAlarmReceiver类: 公共void onReceive(上下文、意图){ 意图i=新意图(上下文,AlarmActivity.class); i、 addFlags(意图、标志、活动、新任务); 背景。起始触觉(i); }
这将在需要时启动AlarmActivity。在您的情况下,您可以将祝酒词和讲话放入AlarmActivity。以下是我在闹钟应用程序中使用的一些示例代码,希望对您有所帮助 要设置警报,请执行以下操作: 私有void setAlarm(){ 这适用于onAlarmReceiver类: 公共void onReceive(上下文、意图){ 意图i=新意图(上下文,AlarmActivity.class); i、 addFlags(意图、标志、活动、新任务); 背景。起始触觉(i); }
这将在需要时启动AlarmActivity。在您的情况下,您将在AlarmActivity中加入祝酒词和讲话。刚刚得到答案,无论您使用的是什么服务、接收者、活动等,您都需要在AndroidManifest.xml中注册它。否则它将无法工作。刚刚得到答案,无论是什么服务、接收者、行动您正在使用的ivity等,您需要在您的AndroidManifest.xml中注册它。否则它将无法工作感谢您的洞察力,如果我坚持使用Alarm Manager,我的闹钟服务是否仍能像正常闹钟一样工作。我想在设置闹钟后保持它运行,即使主应用程序关闭?此外,我无法启动service via alarm manager and pending Intent您能告诉我问题出在哪里吗?请尽快回复,需要您的帮助我不确定是否调用了其他类,因为我确定该服务未运行。是否有适当的程序将新类包含在您的项目或包中?@Commonswaw:我正在使用getService和PeNdingContent。我如何将我的活动和服务添加到清单中?我没有在任何论坛上看到人们谈论它。因为我对Android不太了解。如果你不知道,我可以给你我的gmail或skype id,这样我就可以和你对话了。谢谢你的洞察力,如果我坚持使用Alarm Manager,我的Alarm服务还会继续吗rk作为一个正常的闹钟工作。我想保持它运行,一旦闹钟设置,即使主应用程序关闭?此外,我无法通过alarm manager启动服务和等待的意图,你能告诉我问题可能是什么吗?请尽快回复,需要你的帮助我不确定其他类是否被调用,因为我确定目前,该服务尚未运行。是否有适当的程序将新类包含在您的项目或包中?@commonswaw:我正在使用getService和PendingEvent。如何将我的活动和服务添加到清单中?我没有在任何论坛上看到有人谈论它。因为我对Android不太了解。如果您不知道,我可以获取我的活动和服务吗你可以使用gmail或skype id,这样我就可以和你聊天了。代码片段的格式设置出了问题。当我回到我的电脑时,我会尝试修复它们。t
Context context = getApplicationContext();
AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, OnAlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
myCal = Calendar.getInstance();
myCal.setTimeInMillis(TIME_THE_ALARM_SHOULD_GO_OFF_AS_A_LONG);
mgr.set(AlarmManager.RTC_WAKEUP, myCal.getTimeInMillis(), pi);
Log.i(myTag, "alarm set for " + myCal.getTime().toLocaleString());
Toast.makeText(getApplicationContext(),"Alarm set for " + myCal.getTime().toLocaleString(), Toast.LENGTH_LONG).show();
}