2
我試圖做這個簡單的應用程序,它允許手機在Android 4(ICS)下接收通知時響鈴但不發聲。爲了做到這一點,我將鈴聲/通知流設置爲0(靜音)。當接聽電話時,我將鈴聲音量設置爲最大值(第7頁),然後在空閒時將其恢復爲0(靜音)。STREAM_RING的Android setStreamVolume在RINGING時並不總是有效
爲此,我使用這個簡單的代碼。
public class ReceiverClass extends BroadcastReceiver
{
@Override public void onReceive(Context context, Intent intent)
{
if ("android.intent.action.PHONE_STATE".equals(intent.getAction()))
{ String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
AudioManager amanager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (TelephonyManager.EXTRA_STATE_IDLE.equals(state))
{ amanager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
}
else if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
{ amanager.setStreamVolume(AudioManager.STREAM_RING, 7, 0);
}
}
}
}
問題是,它有時可以工作,有時不會。我找不到原因。我給自己打了十次電話,鈴聲聽起來可能是6次。其他4次靜音。奇怪??
我知道我的應用程序可能需要「太長時間」才能將setStreamVolume調用到7,所以也許這樣做有時會按時(和聲音),有時爲時已晚(因此不會響),因爲調用已經從0音量開始。那麼,有沒有辦法重新啓動鈴聲?有人能幫助我嗎?謝謝。
我已經做了同樣的結果。無論如何,謝謝;-) – Ton
我也試圖扮演自己的默認鈴聲(使用MediaPlayer)。當android失敗並且不播放響鈴時,這工作得很好。但是,如果它沒有失敗,那麼兩個鈴聲都會在重疊的同時聽到,所以結果很糟糕。我希望我知道如何阻止android響鈴(如果它是開啓的)並自行啓動。 – Ton
以下類導致您的問題:[Ringer](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.4.2_r1/com/android /phone/Ringer.java#Ringer)如果鈴聲音量設置爲0,並且在將音量設置爲除0之外的其他音量之前進入,則返回。 – Matware