실시간으로 메시지를받는 활동을 만들었습니다. 때로는 메시지가 알림 일 뿐이며, 메시지가 예/아니요 경고 대화 상자 팝업으로 이어지기도합니다. 클래스에 선언 할 수 있도록 10 초 사운드 알림을 만들고 싶습니다. 나는 사운드를 재생해야 할 때마다 미디어 플레이어를 만들지 않기 위해 글로벌 미디어 플레이어를 만들었습니다.Android mediaplayer가 작동하지 않습니다.
final MediaPlayer mediaPlayer = new MediaPlayer();
final Handler handler = new Handler();
나는 활동에 데이터 소스를 설정 한 OnCreate
난에 AlertDialog는 내가 수행 한 클릭 경고음을 중지 마지막onnewintent
try {
mediaPlayer.prepare();
mediaPlayer.start();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (mediaPlayer.isPlaying())
{
mediaPlayer.stop();
}
}
}, 10000);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
에서 할 메시지를받을 때의 그런
try {
mediaPlayer.setDataSource(getBaseContext(), defaultRingtoneUri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Yes button clicked
response = "1";
Log.v("Yes button clicked", response);
//some code
if(mediaPlayer.isPlaying())
mediaPlayer.stop();
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
response = "-1";
Log.v("No button clicked", response);
//some code
if(mediaPlayer.isPlaying())
mediaPlayer.stop();
break;
}
}
};
나는 이것을 시험 할 때까지 시험 중이었다. xperia p에서 예상되는 동작이 계속 발생합니다. 전혀 문제 없습니다. 오늘 나는 새로운 용암 조리개 (더 작은 ROM 512M을 가지고있다)를 얻었다. 첫 번째 메시지에서 소리를 재생하지만 나중에 IO 예외 오류가 발생합니다. status=0xFFFFFF8E
내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? 이 목적을 위해 더 깨끗한 방법이 있다면 구현을 변경하는 것에 대해 공개 할 것입니다.
01-01 09:53:54.813: D/YourActivity(15988): onNewIntent is called!
01-01 09:53:54.816: W/System.err(15988): java.io.IOException: Prepare failed.: status=0xFFFFFF8E
01-01 09:53:54.818: W/System.err(15988): at android.media.MediaPlayer.prepare(Native Method)
01-01 09:53:54.822: W/System.err(15988): at com.example.delmole.OrderActivity.onNewIntent(OrderActivity.java:309)
01-01 09:53:54.822: W/System.err(15988): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1156)
01-01 09:53:54.823: W/System.err(15988): at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2464)
01-01 09:53:54.823: W/System.err(15988): at android.app.ActivityThread.performNewIntents(ActivityThread.java:2477)
01-01 09:53:54.823: W/System.err(15988): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2486)
01-01 09:53:54.823: W/System.err(15988): at android.app.ActivityThread.access$1400(ActivityThread.java:162)
01-01 09:53:54.824: W/System.err(15988): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1435)
01-01 09:53:54.824: W/System.err(15988): at android.os.Handler.dispatchMessage(Handler.java:107)
01-01 09:53:54.824: W/System.err(15988): at android.os.Looper.loop(Looper.java:194)
01-01 09:53:54.824: W/System.err(15988): at android.app.ActivityThread.main(ActivityThread.java:5371)
01-01 09:53:54.825: W/System.err(15988): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 09:53:54.825: W/System.err(15988): at java.lang.reflect.Method.invoke(Method.java:525)
01-01 09:53:54.826: W/System.err(15988): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-01 09:53:54.826: W/System.err(15988): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-01 09:53:54.827: W/System.err(15988): at dalvik.system.NativeStart.main(Native Method)
LogCat –
에 전체 오류를 입력하십시오. OrderActivity는 무엇입니까? 309 호선에 무엇이 있는지 알려줄 수 있습니까? – Opiatefuchs
라인 309는 mediaPlayer.prepare()입니다. 위의 코드를 이미 try 블록에서 제공했습니다. –