1

サウンドファイルを再生する Android アプリを作成しました。ホームボタンを押すと、音が鳴り続けて止まらないことに気付いたので、クラス内に次の関数を追加しました。

@Override
protected void onStop()
{
    super.onStop();
    finish(); //kill the thread
    pS.reset(); //stop the sound
}
@Override
protected void onPause()
{
    super.onPause();
    finish(); //kill the thread
    pS.reset(); //stop the sound
}

「戻る」または「ホーム」を押すと、音楽が停止し、アプリは強制的に閉じられません。唯一の問題は、FC ではなくサウンドを再生する必要があることです。音が出ない場合は、アプリ FC. 私はそれが

pS.reset();

音が再生されていないときに何をすべきかわからない機能。

私が設定した場合:

pS = null;

pS.reset()ではなく、「戻る」または「ホーム」が押されたときにFCなしで​​同じことを行いますか?

私のPSの初期化:

pS = MediaPlayer.create(iAct.this, R.drawable.sound);

編集:コメントアウトしました

pS.reset();

と追加

pS = null;

FCではありませんが、音は鳴り止みません。

onPause() を更新しました:

@Override
protected void onPause()
{
    super.onPause();
    if (pS.isPlaying()) {
        pS.pause(); //stop the sound
        finish();
    }
    else
        finish();
}

私のログ:

04-02 13:06:40.563: E/AndroidRuntime(925): FATAL EXCEPTION: main
04-02 13:06:40.563: E/AndroidRuntime(925): java.lang.RuntimeException: Unable to pause activity {com.testcom.myapp/com.testcom.myapp.MyappActivity}: java.lang.NullPointerException
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.access$1700(ActivityThread.java:117)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.os.Looper.loop(Looper.java:123)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-02 13:06:40.563: E/AndroidRuntime(925):  at java.lang.reflect.Method.invokeNative(Native Method)
04-02 13:06:40.563: E/AndroidRuntime(925):  at java.lang.reflect.Method.invoke(Method.java:507)
04-02 13:06:40.563: E/AndroidRuntime(925):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-02 13:06:40.563: E/AndroidRuntime(925):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-02 13:06:40.563: E/AndroidRuntime(925):  at dalvik.system.NativeStart.main(Native Method)
04-02 13:06:40.563: E/AndroidRuntime(925): Caused by: java.lang.NullPointerException
04-02 13:06:40.563: E/AndroidRuntime(925):  at com.testcom.myapp.MyappActivity.onPause(MyappActivity.java:119)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.Activity.performPause(Activity.java:3851)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1191)
04-02 13:06:40.563: E/AndroidRuntime(925):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2341)
04-02 13:06:40.563: E/AndroidRuntime(925):  ... 12 more
4

3 に答える 3

1

こちらをご覧ください。問題の解決に役立つ場合があります。

onPause および onResumee でミュートおよびミュート解除する方法

これにより、停止したところから一時停止して開始することができます。

このような:

グローバル:

MediaPlayer ourSong;

あなたのOnCreateで

ourSong = MediaPlayer.create(yourActivity.this, YourSong);
        ourSong.setLooping(true);
ourSong.start();

インユーポーズ機能

    @Override
protected void onPause()
{
    super.onPause();
    if(ourSong.isPlaying)
    ourSong.pause(); //stop the sound
}

@Override
protected void onResume() 
{
    super.onResume();
    ourSong.start();
}
于 2013-04-02T12:30:54.197 に答える
1

PS.stop を onPause() に入れることができます。

于 2013-04-02T12:14:27.437 に答える
1

onPause() に入れるだけです。onStop() / onDestroy() のようなすべてのメソッドが onPause() の後に呼び出されるためです。それは Activity のライフサイクルの流れであったため、onPause のみに記述します。

@Override
protected void onPause()
{
    if(ps.isPlaying)
       pS.stop(); //stop the sound

    super.onStop();
    finish(); //kill the thread
}

戻るボタンとホームボタンを実装し、onKeyUp/onKeyDown を実装してキーを検出し、現在の再生トラックの一時停止/停止を実行する必要があるなど、さまざまなことに問題ありません

于 2013-04-02T12:19:56.007 に答える