我有播放兩個音頻的代碼,一個是來自列表的隨機音頻,另一個是在按鈕單擊時設置的。但是每當我按下按鈕時,它都會隨機關閉。請告訴我這個問題的解決方案。謝謝!App force關閉播放音頻android
package com.example.btn;
import java.net.SocketException;
import java.util.Random;
import android.app.Activity;
import android.app.AlertDialog;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
public class MainActivity extends Activity {
Handler mHandler; // global instance
Runnable your_runnable; // global instance
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void yolo(final View view) {
if (view == view) {
view.setBackgroundResource(R.drawable.btn1);// Change to this when
// clicked
final MediaPlayer mp11 = MediaPlayer.create(getBaseContext(),R.raw.animals009);// get mp3 dir
mp11.start(); // play mp3
mHandler = new Handler();
your_runnable = new Runnable() {
@Override
public void run() {
view.setBackgroundResource(R.drawable.btn2);// Revert back
// to this after
// timer
int[] sounds={R.raw.animals010, R.raw.animals012, R.raw.animals013,R.raw.animals019,R.raw.animals114};
Random r = new Random();
int Low = 0;
int High = 7;
int rndm = r.nextInt(High-Low) + Low;
MediaPlayer mp1 = MediaPlayer.create(getApplicationContext(),sounds[rndm]);
mp1.start();
}
};
mHandler.postDelayed(your_runnable, 3000L);// 3sec timer
}
}
}
日誌貓
09-01 07:38:41.673: V/MediaPlayer(16923): isPlaying: 1
09-01 07:38:41.673: V/MediaPlayer-JNI(16923): isPlaying: 1
09-01 07:38:42.658: D/AndroidRuntime(16923): Shutting down VM
09-01 07:38:42.658: W/dalvikvm(16923): threadid=1: thread exiting with uncaught exception (group=0x4170fc08)
09-01 07:38:42.663: E/AndroidRuntime(16923): FATAL EXCEPTION: main
09-01 07:38:42.663: E/AndroidRuntime(16923): Process: com.example.btn, PID: 16923
09-01 07:38:42.663: E/AndroidRuntime(16923): java.lang.IllegalStateException: Could not execute method of the activity
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.view.View$1.onClick(View.java:3969)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.view.View.performClick(View.java:4630)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.view.View$PerformClick.run(View.java:19339)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.os.Handler.handleCallback(Handler.java:733)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.os.Handler.dispatchMessage(Handler.java:95)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.os.Looper.loop(Looper.java:157)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.app.ActivityThread.main(ActivityThread.java:5335)
09-01 07:38:42.663: E/AndroidRuntime(16923): at java.lang.reflect.Method.invokeNative(Native Method)
09-01 07:38:42.663: E/AndroidRuntime(16923): at java.lang.reflect.Method.invoke(Method.java:515)
09-01 07:38:42.663: E/AndroidRuntime(16923): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
09-01 07:38:42.663: E/AndroidRuntime(16923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
09-01 07:38:42.663: E/AndroidRuntime(16923): at dalvik.system.NativeStart.main(Native Method)
09-01 07:38:42.663: E/AndroidRuntime(16923): Caused by: java.lang.reflect.InvocationTargetException
09-01 07:38:42.663: E/AndroidRuntime(16923): at java.lang.reflect.Method.invokeNative(Native Method)
09-01 07:38:42.663: E/AndroidRuntime(16923): at java.lang.reflect.Method.invoke(Method.java:515)
09-01 07:38:42.663: E/AndroidRuntime(16923): at android.view.View$1.onClick(View.java:3964)
09-01 07:38:42.663: E/AndroidRuntime(16923): ... 11 more
09-01 07:38:42.663: E/AndroidRuntime(16923): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5; index=6
09-01 07:38:42.663: E/AndroidRuntime(16923): at com.example.btn.MainActivity.yolo(MainActivity.java:28)
09-01 07:38:42.663: E/AndroidRuntime(16923): ... 14 more
09-01 07:38:43.783: V/MediaPlayer(16923): message received msg=2, ext1=0, ext2=0
09-01 07:38:43.783: V/MediaPlayer(16923): playback complete
你的意思是你正在寫一個隨機播放列表? *旁註:*你的變量名是如此無意義('R.raw.a,R.raw.b,R.raw.c,R.raw.d,R.raw.e','R.raw.z' ,'mp1','mp11','btn2') – Raptor 2014-09-01 01:55:34
如果'(查看==查看)',則刪除。 每次單擊該按鈕時,它都會創建一個新的「MediaPlayer」實例。您應該嘗試使用一個以避免過多的內存消耗。當應用程序關閉時,你會得到什麼異常?你能提供LogCat輸出嗎? – 2014-09-01 01:59:08
檢查logcat ... – 2014-09-01 02:15:38