대학 시험을위한 안드로이드 응용 프로그램을 개발 중입니다.
원본 삼성 ROM, Android Jelly Bean 4.3이 포함 된 Samsung Galaxy S3을 사용합니다.Android에서 발신 통화의 상태를 관리하는 방법은 무엇입니까?
나가는 호출의 "상태"를 감지하는 데 문제가 있습니다.
음악 서비스의 재생 노래를 일시 중지했다가 다시 시작해야하기 때문에 전화가 내 응용 프로그램에서 "시작"되고 "중지"(거부 또는 거부)되었을 때를 알아야합니다.
: 내가 매니페스트
<receiver android:name=".Music.OutgoingCallReceiver" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
에 수신기를 등록 발신 통화에 대한
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
if (Start.getMusicService().isPlaying()) {
pauseService();
isMusicPlaying = true;
}
}
else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
if (isMusicPlaying){
startService();
isMusicPlaying = false;
}
}
}
과 권한을 추가
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
나는이 해결책을 수신기에 시도했다.
public void onReceive(Context context, Intent intent) {
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneStateListener() {
public void onCallStateChanged(int state, String number) {
if (state == TelephonyManager.CALL_STATE_IDLE) {
if (Start.getMusicService().isPlaying()) {
pauseService();
isMusicPlaying = true;
}
}
else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
if (isMusicPlaying){
startService();
isMusicPlaying = false;
}
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
}
나는 이미 다른 질문을 읽었으며 그 답을 찾지 못했습니다.
도와 주시면 감사하겠습니다.
안드레아
onReceive가 전혀 호출되지 않고 있습니까? BroadcastReceiver를 어떻게 설정 했습니까? – Rarw
@Rarw 나는 onReceive 메서드로 내 질문을 편집합니다. 매번 제대로 호출되지만 메소드를 수행 할 수 없습니다. – andrea92
호출이있을 때 앱의 볼륨을 조절하려면 오디오 포커스 (https : /)를 사용할 수도 있습니다. /developer.android.com/training/managing-audio/audio-focus.html –