从静音模式切换时出现问题

时间:2013-03-07 08:51:59

标签: android

我正在做一个检测来电的程序,如果应用程序处于静音模式,它会切换到常规模式并响铃。 我曾使用广播接收器来收听来电,并从中启动服务。

我正在使用的广播接收器是

    public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

    switch (am.getRingerMode()) {
        case AudioManager.RINGER_MODE_SILENT:
            Log.i("MyApp","Silent mode");
            Intent IncomingNumberIntent = new Intent(context,RingOnSilent.class);  
  //             IncomingNumberIntent.putExtra("PhoneNumber", phonenumber);
             context.startService(IncomingNumberIntent); 
            break;
        case AudioManager.RINGER_MODE_VIBRATE:
            Log.i("MyApp","Vibrate mode");
            break;
        case AudioManager.RINGER_MODE_NORMAL:
            Log.i("MyApp","Normal mode");
            break;
    }
}  

从那里开始服务,

     @Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
  @SuppressWarnings("deprecation")
 @Override
  public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
am = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
super.onStart(intent, startId);
}

问题是在安装后第一次切换到正常但没有响铃。 但在那之后它会响起。任何人都可以告诉我这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

也许你应该在服务中首先打电话给“超级”。像这样:

    @SuppressWarnings("deprecation")
    @Override
    public void onStart(Intent intent, int startId) {
      // TODO Auto-generated method stub
      super.onStart(intent, startId); 
      am = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
      am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    }

否则,在调用其他内容时,您的服务可能还没有准备就绪。应始终首先调用Super以从其父类“初始化”内容。