Android 从广播接收器访问对象?
这是我用来启动警报的广播接收器的源代码:Android 从广播接收器访问对象?,android,Android,这是我用来启动警报的广播接收器的源代码: public class AlarmReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); Uri alar
public class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent, 0);
Uri alarmUri =
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alarmUri == null)
{
alarmUri =
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.play();
//intent to call the activity which shows on ringing
Intent myIntent = new Intent(context, Time_Date.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
//display that alarm is ringing
Toast.makeText(context, "Alarm Ringing...!!!",
Toast.LENGTH_LONG).show();
ComponentName comp = new ComponentName(context.getPackageName(),
AlarmService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
我从另一个班级打电话给:
public void end(View view)
{
ringtone.stop();
}
但是,这肯定是错误的方式,我只需要知道,调用它的最佳和正确方式是什么 我建议使用两个
公共静态
函数的类访问一个私人静态铃声
。
这两个功能您可以调用playRingtone和stopRingtone,让它们首先检查是否有ringABC(播放)。(>以避免出现空点异常或播放两个铃声)
编辑:
对我的代码进行简单的编辑作为答案会更好,因为我很难解释您在上述答案中提到的内容:)
public class MyRingtone {
private static Ringtone ringtone = null;
public static boolean startRingtone(Context context) {
if(ringtone == null) {
Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alarmUri == null) {
alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.play();
return true;
}
else
return false;
}
public static boolean stopRingtone() {
if(ringtone != null) {
ringtone.stop();
ringtone = null;
return true;
}
else
return false;
}
}