[英]I cant turn the audio playback off in ExoPlayer! NullPointerException
我面临一个问题:我无法关闭音频播放
这是错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.exoplayer2.SimpleExoPlayer.stop()' on a null object reference
at com.dglasmann.radioapp.MainActivity.lambda$onCreate$1$MainActivity(MainActivity.java:37)
这是 MainActivity.java 的代码:
public class MainActivity extends AppCompatActivity {
SimpleExoPlayer simpleExoPlayer;
Button btn, btn2;
boolean isplaying;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
isplaying = false;
btn = findViewById(R.id.btn);
btn.setOnClickListener(v -> {
if (!isplaying) {
initplayer();
isplaying = true;
}
});
btn2 = findViewById(R.id.btn2);
btn2.setOnClickListener(v -> {
if (isplaying) {
simpleExoPlayer.stop();
}
});
}
public void initplayer() {
SimpleExoPlayer simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();
DataSource.Factory datasourcefactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this,"app"));
MediaSource audiosource = new ProgressiveMediaSource.Factory(datasourcefactory).createMediaSource(Uri.parse("https://stream.audioxi.com/SW"));
simpleExoPlayer.prepare(audiosource);
simpleExoPlayer.setPlayWhenReady(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
simpleExoPlayer.release();
}
@Override
protected void onPause() {
simpleExoPlayer.release();
super.onPause();
}
public void pause() {
simpleExoPlayer.setPlayWhenReady(false);
}
}
当我调用 btn2.setOnClickListener 时出现错误。 我知道我指的是另一个 simpleExoPlayer,它不是“initplayer”function,所以这就是我有这个错误的原因。 但我不知道如何引用 function“initplayer”包含的 simpleExoPlayer。 如果我不按 btn2 它工作正常。
您正面临此错误,因为在 initplayer() 中,您正在创建 ExoPlayer 的新实例。 因此,要解决它,只需将您的 initplayer 更改为:
public void initplayer() {
simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();
DataSource.Factory datasourcefactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this,"app"));
MediaSource audiosource = new ProgressiveMediaSource.Factory(datasourcefactory).createMediaSource(Uri.parse("https://stream.audioxi.com/SW"));
simpleExoPlayer.prepare(audiosource);
simpleExoPlayer.setPlayWhenReady(true);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.