gpt4 book ai didi

Android mediaPlayer 只播放文件一次

转载 作者:行者123 更新时间:2023-12-01 09:52:51 24 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,当我按下按钮或摇晃手机时,它可以播放之前录制的某个音频文件。这是我的代码。

public class Reproduzir extends Activity implements SensorEventListener{
MediaPlayer player = new MediaPlayer();
SensorManager sensor;

@Override
protected void onCreate(Bundle savedInstanceState ){
super.onCreate(savedInstanceState);

sensor= (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.reproduzir);
Button reproduzir = (Button) findViewById(R.id.reproduzir);
reproduzir.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
play();

}
});
Button fechar= (Button) findViewById(R.id.fechar);
fechar.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (player.isPlaying()) {
player.stop();
player.release();
}
finish();


}
});

}
public void play(){
try {
player.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/2cp.3gp");
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException 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 void onStart(){
super.onStart();
sensor.registerListener(this,sensor.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
}


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if(event.values[0]>10.2
||event.values[1]>10.2
||event.values[2]>10.2){
play();

}
}

}

我的问题是,当我运行它时,我只能播放一次。如果我再次按下按钮或再次摇动它,它什么也不做。任何人都可以帮忙吗?

最佳答案

简单的解决方法是简单地添加 player.reset()在您的 play()调用 player.setDataSource(...) 之前的方法.

您只能调用setDataSource(...)一次,无需重置播放器。调用reset() 是合法的但是在任何状态下(即使播放器尚未初始化)。

换句话说,即使这是您第一次调用 play()可以在您的 play() 中使用以下代码方法...

try {
player.reset();
player.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/2cp.3gp");
player.prepare();
player.start();
}
// Your catch blocks here

关于Android mediaPlayer 只播放文件一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com