簡體   English   中英

Android MediaPlayer錯誤

[英]Android MediaPlayer error

E/MediaPlayer: EventHandler handleMessage thread id is 1
 E/MediaPlayer: EventHandler handleMessage thread id is 1
 E/MediaPlayer: currentThread is 1, handleMessage mTimeProvider hashcode is 1112571032, mTimeProvider is android.media.MediaPlayer$TimeProvider@42507c98, msg is { when=-19ms what=7 target=android.media.MediaPlayer$EventHandler }

在嘗試播放音頻時出現上述錯誤,為什么出現此錯誤有任何想法,相同的代碼在某些地方有效,我正在從片段中調用靜態函數?

  Global.playAudio("sounds/add_comment.mp3",context); 
public static void playAudio(String aud, Context context) {
final MediaPlayer mp;

try {
    AssetFileDescriptor fileDescriptor =
            context.getAssets().openFd(aud);
    mp = new MediaPlayer();
    mp.setDataSource(fileDescriptor.getFileDescriptor(),
            fileDescriptor.getStartOffset(),
            fileDescriptor.getLength());
    fileDescriptor.close();
    mp.prepare();
    mp.start();
} catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

讓我知道這是否有幫助-

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener,AudioManager.OnAudioFocusChangeListener{
MediaPlayer mp;
AudioManager mAudioManager ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    int result = mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN);
    if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        //got audio focus
        playAudio("bell.mp3",this);
    }

}

private void playAudio(String aud, Context context) {
    try {
        AssetFileDescriptor fileDescriptor =
                context.getAssets().openFd(aud);
        mp = new MediaPlayer();
        mp.setDataSource(fileDescriptor.getFileDescriptor(),
                fileDescriptor.getStartOffset(),
                fileDescriptor.getLength());
        fileDescriptor.close();
        mp.prepareAsync();
        mp.setOnPreparedListener(this);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    mp.start();
}

@Override
public void onAudioFocusChange(int i) {

}
}

在這里,我首先嘗試獲得音頻焦點,然后讓Mediaplayer異步執行任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM