setAudioStreamType不赞成使用的方法,我该如何替换呢?

时间:2019-06-24 22:57:16

标签: android android-mediaplayer media-player

我正在尝试使用Mediaplayer在android studio中制作一个广播流应用程序,但是我在编译时显示了下一个错误:

使用或覆盖已弃用的API。 使用-Xlint:deprecation重新编译以获取详细信息。

我正在android文档中搜索,我应该将此方法重新放置为setAudioAttributes,我该如何更改?我是使用Android Studio的新手。

谢谢。

公共类电台扩展了片段{

Button play_pause;
MediaPlayer mp;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.radio, container, false);
    play_pause = (Button) view.findViewById(R.id.btnplay);
    try {
           mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mp.setDataSource("http://198.27.83.65:9962/;stream.mp3");
            mp.prepareAsync();
     }
     catch (Exception e){
         Toast.makeText(getContext(),"Error" + e,Toast.LENGTH_SHORT).show();
     }
     //mp = MediaPlayer.create(this.getContext(), R.raw.radio);
        play_pause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                     if(mp.isPlaying()) {
                        mp.pause();
                        Toast.makeText(getContext(),"Stop",Toast.LENGTH_SHORT).show();
                    }
                    else {
                        mp.start();
                        Toast.makeText(getContext(),"Start",Toast.LENGTH_SHORT).show();
                    }
            }
        });
    return view;
}

}

4 个答案:

答案 0 :(得分:0)

mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

mp.setAudioAttributes(
            new AudioAttributes
               .Builder()
               .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
               .build());

答案 1 :(得分:0)

使用 setAudioAttributes(AudioAttributes)代替 setAudioStreamType()

Google文档说:

设置此MediaPlayer的音频流类型。有关流类型的列表,请参见AudioManager。必须在prepare()或prepareAsync()之前调用此方法,以使目标流类型在此之后生效。

答案 2 :(得分:0)

setAudioStreamType 已替换为 setAudioAttributes。 下面是相同的示例实现。如需更多了解,您可以参考以下文档:

https://developer.android.com/guide/topics/media/mediaplayer.html#kotlin

val mediaPlayer = MediaPlayer().apply {
setAudioAttributes(
    AudioAttributes.Builder()
        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
        .setUsage(AudioAttributes.USAGE_MEDIA)
        .build()
)
setDataSource(applicationContext, myUri)
prepare()
start()
}

答案 3 :(得分:-2)

它将在所有API级别上运行

MediaPlayer mediaPlayer = new MediaPlayer();
Uri audioUri = Uri.parse(strUri);
    try {
        mediaPlayer.setDataSource(context, audioUri);
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        mediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaPlayer.start();