如何停止菜单上的 mp3 播放器
How Can I stop mp3 player on menu
我在菜单上创建了一个项目来播放 mp3。但它停不下来。单击 "stop" 按钮时如何停止媒体播放器。我希望单击停止按钮必须停止所有在菜单上播放 mp3。
谢谢...
public class DetailActivity 扩展 AppCompatActivity {
Toolbar mToolbar;
ImageView mFlower;
TextView mDescription,mBaslik;
Button fab;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
mToolbar = findViewById(R.id.toolbar);
mToolbar.setTitle(getResources().getString(R.string.app_name));
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("MP3 --->");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.stop) {
mediaPlayer.stop();
mediaPlayer.release();
// mediaPlayer.onDestroy();
}
if (id == R.id.fav) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.yor) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon3);
mediaPlayer.start();
}
if (id == R.id.asd) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon1);
mediaPlayer.start();
}
return super.onOptionsItemSelected(item);
}
}
您必须像这样在方法外声明 MediaPlayer 对象
MediaPlayer mediaplayer;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.foni) {
//MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.stop) {
//MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.stop();
}
if (id == R.id.fonb) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon1);
mediaPlayer.start();
}
if (id == R.id.fonu) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon3);
mediaPlayer.start();
}
return super.onOptionsItemSelected(item);
}
MediaPlayer mp;
AssetFileDescriptor descriptor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout./////Your activity layout////);
if(mp != null){
if(mp.isPlaying()){
mp.stop();
}
}
try {
descriptor = getAssets().openFd("////the name of your song.mp3////"); // song should be in assets folder
} catch (IOException e) {
e.printStackTrace();
}
audioPlayer();
}
public void audioPlayer() {
//set up MediaPlayer
mp = new MediaPlayer();
try {
mp.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
public void OnPlayPressed(View view){
if(mp.isPlaying()){
mp.pause();
}else{
mp.start();
}
}
public void OnStopPressed(View view){
mp.stop();
try {
descriptor = getAssets().openFd("////the name of your song.mp3////"); // song should be in assets folder
} catch (IOException e) {
e.printStackTrace();
}
audioPlayer();
}
创建 2 个按钮,1 个用于 start/pause,1 个用于停止。 "OnPlayPressed" 是第一个按钮的侦听器,"OnStopPressed" 是第二个按钮的侦听器。
只要了解其背后的逻辑,就可以随意修改此代码。
编辑:在 onStopPressed 中,我重新初始化描述符,以便您可以再次按下 "play" 按钮并再次播放您的歌曲。但这不是必需的。你可以只写 "mp.stop();".
我在菜单上创建了一个项目来播放 mp3。但它停不下来。单击 "stop" 按钮时如何停止媒体播放器。我希望单击停止按钮必须停止所有在菜单上播放 mp3。 谢谢...
public class DetailActivity 扩展 AppCompatActivity {
Toolbar mToolbar;
ImageView mFlower;
TextView mDescription,mBaslik;
Button fab;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
mToolbar = findViewById(R.id.toolbar);
mToolbar.setTitle(getResources().getString(R.string.app_name));
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("MP3 --->");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.stop) {
mediaPlayer.stop();
mediaPlayer.release();
// mediaPlayer.onDestroy();
}
if (id == R.id.fav) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.yor) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon3);
mediaPlayer.start();
}
if (id == R.id.asd) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon1);
mediaPlayer.start();
}
return super.onOptionsItemSelected(item);
}
}
您必须像这样在方法外声明 MediaPlayer 对象
MediaPlayer mediaplayer;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.foni) {
//MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer = MediaPlayer.create(this, R.raw.fon2);
mediaPlayer.start();
}
if (id == R.id.stop) {
//MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.stop();
}
if (id == R.id.fonb) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon1);
mediaPlayer.start();
}
if (id == R.id.fonu) {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.fon3);
mediaPlayer.start();
}
return super.onOptionsItemSelected(item);
}
MediaPlayer mp;
AssetFileDescriptor descriptor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout./////Your activity layout////);
if(mp != null){
if(mp.isPlaying()){
mp.stop();
}
}
try {
descriptor = getAssets().openFd("////the name of your song.mp3////"); // song should be in assets folder
} catch (IOException e) {
e.printStackTrace();
}
audioPlayer();
}
public void audioPlayer() {
//set up MediaPlayer
mp = new MediaPlayer();
try {
mp.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
public void OnPlayPressed(View view){
if(mp.isPlaying()){
mp.pause();
}else{
mp.start();
}
}
public void OnStopPressed(View view){
mp.stop();
try {
descriptor = getAssets().openFd("////the name of your song.mp3////"); // song should be in assets folder
} catch (IOException e) {
e.printStackTrace();
}
audioPlayer();
}
创建 2 个按钮,1 个用于 start/pause,1 个用于停止。 "OnPlayPressed" 是第一个按钮的侦听器,"OnStopPressed" 是第二个按钮的侦听器。
只要了解其背后的逻辑,就可以随意修改此代码。
编辑:在 onStopPressed 中,我重新初始化描述符,以便您可以再次按下 "play" 按钮并再次播放您的歌曲。但这不是必需的。你可以只写 "mp.stop();".