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;
    }
}