0

Androidアプリ開発は初めてで、初めてのアプリです。私は音楽プレーヤーを構築しています。次の方法があります

public void  playSong(int songIndex){
    // Play song

        mContext = getApplicationContext();
        AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);

        OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
            public void onAudioFocusChange(int focusChange) {
                if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
                    mp.pause();
                } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
                    mp.start();
                } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
                    mp.stop();
                }
            }
        };

        // Request audio focus for playback
        int result = am.requestAudioFocus(afChangeListener,
                                         // Use the music stream.
                                         AudioManager.STREAM_MUSIC,
                                         // Request permanent focus.
                                         AudioManager.AUDIOFOCUS_GAIN);

        if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            // Start playback.
            try {
                mp.reset();
                mp.setDataSource(songsList.get(songIndex).get("songPath"));
                mp.prepare();
                mp.start();
                String songTitle = songsList.get(songIndex).get("songTitle");
                songTitleLabel.setText(songTitle);

                // Changing Button Image to pause image
                btnPlay.setImageResource(R.drawable.btn_pause);

                // set Progress bar values
                songProgressBar.setProgress(0);
                songProgressBar.setMax(100);

                // Updating progress bar
                updateProgressBar();    
            }
            catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

}

曲が完了すると、次の曲の再生が開始されるはずですが、開始されません。次に、デフォルトのメディアプレーヤーに切り替えて再生し、アプリに戻ると、アプリが再生されます。オーディオフォーカスと関係があると思います。既にフォーカスがあるかどうかを判断する方法、または完了時にフォーカスを解放する方法。ありがとう!!

4

1 に答える 1

0

これを試しましたか

              @Override
    public void onCompletion(MediaPlayer arg0) {

        // check for repeat is ON or OFF
        if(isRepeat){
            // repeat is on play same song again
            //playSong(currentSongIndex);
             songPlayOnThread(currentSongIndex);
        } else if(isShuffle){
            // shuffle is on - play a random song
            Random rand = new Random();
            currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
            //playSong(currentSongIndex);
             playsong(currentSongIndex);
        } else{
            // no repeat or shuffle ON - play next song
            if(currentSongIndex < (songsList.size() - 1)){
                String result=playSong(currentSongIndex + 1);
                if(result!="success")
                {
                //  mp.stop();
                //  currentSongIndex=0;
                }
                currentSongIndex = currentSongIndex + 1;
            }else{
                // play first song
            //  playSong(0);
                currentSongIndex = 0;
            }
        }
    }
于 2013-04-25T07:31:20.460 に答える