0

こんにちは、 http://code.google.com/p/aacdecoder-android/を使用しています。私の主なアクティビティの完全なコードは次のとおりです。http://pastebin.com/FmaVgfNP戻るボタンを押すと、アプリはオーディオのストリーミングを続けます。これを使用してみました。基本的に、アプリには2つのアクティビティがあります。1つのリストビューで、1つのアイテムをクリックすると、そのステーションのストリームが自動再生されますが、戻るボタンを押すと、ストリームが停止し、作成しようとしました。このようなサービス:

public class MyService extends Service {
    private static final String TAG = "AACPlayerActivity";


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");

        //player = MediaPlayer.create(this, R.raw.braincandy);
        //player.setLooping(false); // Set looping
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        //player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        //player.start();
    }
}

私は自分のアクティビティでサービスを構成するためにこのコードを試しました:

startService(new Intent(this, MyService.class));

aacplayerが始まるときの私の主な活動で

それから停止するとき私はこれを置きます:

stopService(new Intent(this, MyService.class));

MyService.class oncreate関数を入れて、ユーザーがmultiPlayer.playAsync( getUrl());戻るボタンを押してもオーディオストリームがストリーミングされ続けるようにしました。

しかし、私はこのエラーを取得しています:

10-16 02:02:07.760: E/AndroidRuntime(25638): java.lang.RuntimeException: Unable to start service com.spoledge.aacplayer.MyService@41b40ca0 with Intent { cmp=com.spoledge.aacplayer/.MyService }: java.lang.NullPointerException

プレーヤーがオーディオをストリーミングするタイミングがはっきりしないロジックを正しく実行しているかどうかはわかりません。そのアクションをサービスとして登録して、バックグラウンドで保持することができます。

どうもありがとう。

4

1 に答える 1

1

バインドされたサービスを使用する前にこれを実行しました。バウンドは、一時停止/停止/再生などを簡単に実装できるため、優れています。バックグラウンドでアクティビティがシステムによって強制終了された場合、ユーザーがサービスを再起動したときにサービスに再バインドできます。再生の制御を有効にしました。

自分のブログへのリンクを投稿するのが悪い習慣かどうかはわかりませんが、完全なソースコードはhttp://www.speakingcode.com/2012/02/22/creating-a-streaming-audio-appにあります。 -for-android-with-android-media-mediaplayer-android-media-audiomanager-and-android-app-service /

リンクが好ましくない場合は、ここで解決策を複製しますが、時間がかかります:-)幸運と幸せなコーディング!

yuoが行っているような開始済みサービスを使用し、バインドされたサービスの利点を失う場合は、MediaPlayerオブジェクトを完全にサービスに移動し、アクティビティから除外する必要があります。onCreate()でMediaPlayerをインスタンス化できますが、onStartCommand()メソッドで開始する(playAsync()を呼び出す)ことをお勧めします。

于 2012-10-16T07:38:50.813 に答える