1

私は基本的なラジオ プレーヤーを作成しました。それを再生するコードは以下のとおりで、setWakeMode メソッドを除いて完全に動作します。電話をスタンバイにすると、オーディオは最大 2 分間再生されますが、その後、停止と開始が始まります。何か案は?

注意 radioPlayer は MediaPlayer のインスタンスです。

public boolean startRadio()
{   
    try
    {
        String url = getString(R.string.radioURL); // Radio url.
        radioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        radioPlayer.setDataSource(url);
        radioPlayer.prepare(); // might take long! (for buffering, etc)

        radioPlayer.setWakeMode(this.getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
        radioPlayer.start();
        return true;
    }
    catch(Exception e)
    {
        showAlert(getString(R.string.error), getString(R.string.radioError));
        radioPlayer.release();
        radioPlayer = new MediaPlayer();
        return false;
    }
}

更新: 他のスレッドを確認したところ、この問題は HTC 電話に固有のものであることがわかりました。実際、私の Samsung Galaxy Tab は、ウェイクロックがまったくなくても存続します。何か案は?

4

4 に答える 4

6

Wifi がスリープ モードになるため、MediaPlayer が停止するため、WifiLockを使用してそれを防ぐ必要があります。

于 2013-06-13T07:30:18.187 に答える
1

Android Developers Google + ページの再投稿 [ this

ちょっとしたヒント: ユーザーがアプリを使用している間 (たとえば、ゲームをプレイしたりビデオを見たりしている間) 画面をオンにしておく場合は、次のいずれかを使用するのが最善の方法です。

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON

http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(ブール値)

http://developer.android.com/reference/android/media/MediaPlayer.html#setScreenOnWhilePlaying(ブール値)

http://developer.android.com/reference/android/os/PowerManager.WakeLock.htmlは、必要がない限り使用しないでください。これには WAKE_LOCK パーミッションをリクエストする必要があるためです (そのため、ユーザーがそれらを離れたときにもう 1 つのパーミッションが表示されます)。アプリをインストールする可能性が低くなります)。また、以前の API のいずれかを使用すると、システムがウェイク ロックを管理できるため、ユーザーがアプリを離れても画面が表示されたままになるというバグが発生することはありません。

于 2012-02-11T22:56:34.107 に答える
-1

keepScreenOn=true に設定

最も簡単なこと。

*ビューの 1 つで、keepScreenOnというプロパティを見つけて、それを trueに設定します*

それでおしまい。それは魅力のように機能します:)

于 2013-01-17T08:23:32.697 に答える