1

私はアンドロイドが初めてで、サウンドを再生してサウンドオーバー後に画像を表示する必要があります。

以下のコードは、サウンド表示の完了後に次の画像を表示し、それに関連するサウンドを再生することを示しています

コード:

mymediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub
                //mymediaplayer=null;
                //mymediaplayer.reset();
                mseekbar.setProgress(0);
                count++;
                Toast.makeText(getApplicationContext(), "SONG PLAYING OVER", 0).show();
                changeImage(count);
                playsound(count);

            }
        });

そのため、一部の画像では問題ありませんが、一部の画像の後、メディアプレーヤーを作成できず、アプリを強制終了するという例外がスローされます。

以下の playsound メソッドのコード。

private void playsound(int soundindex) {
        // TODO Auto-generated method stub
        if(mymediaplayer!=null)
            mymediaplayer.release();
        Toast.makeText(getApplicationContext(), "SOUND"+soundindex, 0).show();
        if(souncollect.getlengthofsoundfile_array()>=count)
        {
            try
            {
            mymediaplayer=MediaPlayer.create(MainActivity.this, souncollect.capture_sound.get(soundindex));


            mymediaplayer.seekTo(0);
            mymediaplayer.start();
            new Thread(this).start();
            }
            catch(Exception ex)
            {
                Toast.makeText(getApplicationContext(), "ERROR WHILE PLAYING SOUND", Toast.LENGTH_LONG).show();
            }
        }
        else
        {
            Toast.makeText(getApplicationContext(), "NO SOUND TO PLAY", Toast.LENGTH_SHORT).show();
        }

すべてのサウンドとイメージは、いくつかのarraylist内の他のクラスで定義されています.arraylistには、18のサウンドと18のイメージがありました。

以下の例外のログファイルについて言及

02-27 13:06:00.908: D/dalvikvm(1503): GC_EXTERNAL_ALLOC freed 87K, 52% free 2615K/5379K, external 2112K/2137K, paused 53ms
02-27 13:06:10.928: D/dalvikvm(1503): GC_EXTERNAL_ALLOC freed 23K, 52% free 2621K/5379K, external 2289K/2613K, paused 42ms
02-27 13:06:15.488: D/dalvikvm(1503): GC_EXTERNAL_ALLOC freed 14K, 52% free 2631K/5379K, external 7212K/8760K, paused 264ms
02-27 13:06:21.039: D/dalvikvm(1503): GC_EXTERNAL_ALLOC freed 10K, 52% free 2634K/5379K, external 7015K/8761K, paused 42ms
****02-27 13:06:27.098: E/MediaPlayer(1503): Unable to to create media player
02-27 13:06:27.098: D/MediaPlayer(1503): create failed:
02-27 13:06:27.098: D/MediaPlayer(1503): java.io.IOException: setDataSourceFD failed.: status=0x80000000****
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.media.MediaPlayer.setDataSource(Native Method)
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.media.MediaPlayer.create(MediaPlayer.java:666)
02-27 13:06:27.098: D/MediaPlayer(1503):    at com.goutam.imageandplaysound.MainActivity.playsound(MainActivity.java:85)
02-27 13:06:27.098: D/MediaPlayer(1503):    at com.goutam.imageandplaysound.MainActivity.access$3(MainActivity.java:76)
02-27 13:06:27.098: D/MediaPlayer(1503):    at com.goutam.imageandplaysound.MainActivity$1.onCompletion(MainActivity.java:117)
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1316)
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.os.Looper.loop(Looper.java:123)
02-27 13:06:27.098: D/MediaPlayer(1503):    at android.app.ActivityThread.main(ActivityThread.java:3683)
02-27 13:06:27.098: D/MediaPlayer(1503):    at java.lang.reflect.Method.invokeNative(Native Method)
02-27 13:06:27.098: D/MediaPlayer(1503):    at java.lang.reflect.Method.invoke(Method.java:507)
02-27 13:06:27.098: D/MediaPlayer(1503):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-27 13:06:27.098: D/MediaPlayer(1503):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-27 13:06:27.098: D/MediaPlayer(1503):    at dalvik.system.NativeStart.main(Native Method)
02-27 13:06:27.218: D/AndroidRuntime(1503): Shutting down VM
02-27 13:06:27.218: W/dalvikvm(1503): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-27 13:06:27.228: E/AndroidRuntime(1503): FATAL EXCEPTION: main
02-27 13:06:27.228: E/AndroidRuntime(1503): java.lang.NullPointerException
02-27 13:06:27.228: E/AndroidRuntime(1503):     at com.goutam.imageandplaysound.MainActivity.playsound(MainActivity.java:106)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at com.goutam.imageandplaysound.MainActivity.access$3(MainActivity.java:76)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at com.goutam.imageandplaysound.MainActivity$1.onCompletion(MainActivity.java:117)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1316)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at android.os.Looper.loop(Looper.java:123)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at android.app.ActivityThread.main(ActivityThread.java:3683)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at java.lang.reflect.Method.invokeNative(Native Method)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at java.lang.reflect.Method.invoke(Method.java:507)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-27 13:06:27.228: E/AndroidRuntime(1503):     at dalvik.system.NativeStart.main(Native Method)
02-27 13:11:27.292: I/Process(1503): Sending signal. PID: 1503 SIG: 9

ご覧のとおり、いくつかの画像とサウンドは問題ありませんが、しばらくするとメディアプレーヤーの作成に失敗しました。混乱して、サウンドを 1 つずつ再生するためにメディアプレーヤーを実装する方法がわかりません。画像番号 7 の後で失敗しました。

コード内の onpause 状態についても言及

@Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        if(!mymediaplayer.isPlaying())
        {
            mymediaplayer=null;
            mymediaplayer.release();
        }
    }

ですから、より良い方法を提案してください。返信ありがとうございます

4

0 に答える 0