private MediaPlayer(int sessionId) { super(new AudioAttributes.Builder().build(), AudioPlaybackConfiguration.PLAYER_TYPE_JAM_MEDIAPLAYER); Looper looper; if ((looper = Looper.myLooper()) != null) { mEventHandler = new EventHandler(this, looper); } else if ((looper = Looper.getMainLooper()) != null) { mEventHandler = new EventHandler(this, looper); } else { mEventHandler = null; }
时间: 2024-04-28 08:19:35 浏览: 15
这是MediaPlayer类的另一个构造函数,它接受一个整数类型的参数sessionId。该构造函数会调用父类的构造函数,并将具有默认配置的AudioAttributes对象作为参数传递。此外,它还会设置MediaPlayer对象的音频回放类型为PLAYER_TYPE_JAM_MEDIAPLAYER,以指示它是一个媒体播放器。
接下来,该构造函数会根据当前线程是否有Looper对象来初始化mEventHandler成员变量,用于处理MediaPlayer对象的事件。如果当前线程有Looper对象,则使用该Looper对象创建一个新的EventHandler对象。否则,使用主线程的Looper对象创建一个新的EventHandler对象。如果当前线程没有Looper对象,则不会创建EventHandler对象。
总之,这个构造函数的作用是为MediaPlayer对象设置默认的音频属性和回放类型,并为对象创建一个EventHandler对象以处理事件。
相关问题
public MediaPlayer() { super(new AudioAttributes.Builder().build(), 0); this(AudioSystem.AUDIO_SESSION_ALLOCATE); SystemProperties.set("media.player.route","MediaPlayerJava-"); }
这是关于 Android 平台中 MediaPlayer 类的构造函数。它创建了一个具有默认 AudioAttributes 的 MediaPlayer 对象,并将其音频会话 ID 设置为 AUDIO_SESSION_ALLOCATE。此外,它还使用 SystemProperties 将媒体播放器的路由设置为 "MediaPlayerJava-"。这个构造函数的目的是初始化 MediaPlayer 对象的一些默认属性,并为其设置一些内部参数。
public void play(String path){ Log.d(TAG,"play"); try{ player.reset(); player.setDataSource(path); AudioAttributes attrs = new AudioAttributes.Builder() .setLegacyStreamType(AudioManager.STREAM_MUSIC) .build(); player.setAudioAttributes(attrs); //player.setAudioAttributes(AudioManager.STREAM_MUSIC); player.prepareAsync(); player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { player.start(); addTimer(); } });改怎么修改
您可以将 `setAudioAttributes` 方法注释掉,然后使用 `setAudioStreamType` 方法来设置音频流的类型,如下所示:
```
public void play(String path) {
Log.d(TAG, "play");
try {
player.reset();
player.setDataSource(path);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.prepareAsync();
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
player.start();
addTimer();
}
});
}
// ...
}
```
请注意,`setAudioStreamType` 方法已经被标记为过时,但是在较旧的 Android 版本上仍然可以使用。如果您的应用程序目标为 Android 26 及更高版本,则需要使用 `setAudioAttributes` 方法来设置音频属性。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)