Java 音乐播放器应用程序中的歌曲一起播放
我想在我开始另一首歌时停止上一首歌,但目前,它将它们一起播放 我已经尝试了Java 音乐播放器应用程序中的歌曲一起播放,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我想在我开始另一首歌时停止上一首歌,但目前,它将它们一起播放 我已经尝试了mediaPlayer.stop()和mediaPlayer.release(),但是没有成功 我应该在Parcalar类中执行此操作吗?你可以在底部找到我的两个班级的代码 另外,Seekbar也有一个问题——当我播放音乐时,Seekbar将到达最终位置。但首先我想解决我的第一个问题 package com.example.myapplication; import android.media.MediaPlayer;
mediaPlayer.stop()
和mediaPlayer.release()
,但是没有成功
我应该在Parcalar
类中执行此操作吗?你可以在底部找到我的两个班级的代码
另外,Seekbar也有一个问题——当我播放音乐时,Seekbar将到达最终位置。但首先我想解决我的第一个问题
package com.example.myapplication;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
private Button button;
boolean isPaused;
private ArrayList<String> musicNames;
private double startTime = 0;
private double finalTime = 0;
private Handler myHandler= new Handler();
private SeekBar seekBar;
private int forwardTime = 5000;
private int backwardTime = 5000;
private ImageView playPause;
private MediaPlayer mediaPlayer;
private TextView textView1,textView2,textView3;
public static int oneTimeOnly = 0;
public ArrayList<String> getMusicNames() {
return musicNames;
}
public MediaPlayer getMediaPlayer() {
return mediaPlayer;
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playPause = findViewById(R.id.imageView);
seekBar = findViewById(R.id.seekBar);
textView1 = findViewById(R.id.textView1);
textView2 = findViewById(R.id.textView2);
textView3 = findViewById(R.id.textView3);
textView2.setText("Song.Mp3");
Bundle bundle = getIntent().getExtras();
final int position = bundle.getInt("position");
mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.neureich);
seekBar.setClickable(false);
musicNames=new ArrayList<String>();
musicNames.add("neureich");
musicNames.add("neureichkisa");
musicNames.add("traviscotthighestinthroom");
if(!mediaPlayer.isPlaying()) {
int u = getResources().getIdentifier(musicNames.get(position), "raw", "com.example.myapplication");
mediaPlayer = MediaPlayer.create(getApplicationContext(), u);
}
else{
mediaPlayer.stop();
mediaPlayer.release();
int u = getResources().getIdentifier(musicNames.get(position), "raw", "com.example.myapplication");
mediaPlayer = MediaPlayer.create(getApplicationContext(), u);
mediaPlayer.start();
}
playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser)
mediaPlayer.seekTo(progress);
textView1.setText(String.format ("%d min,%d sec",
TimeUnit.MILLISECONDS.toMinutes((long)startTime),
TimeUnit.MILLISECONDS.toSeconds((long)startTime)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)//
startTime)))
);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
isPaused=false;
if(!mediaPlayer.isPlaying()){
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
startTime = mediaPlayer.getCurrentPosition();
if(oneTimeOnly == 0){
seekBar.setMax((int)finalTime);
oneTimeOnly = 1;
}
textView3.setText(String.format ("%d min,%d sec",
TimeUnit.MILLISECONDS.toMinutes((long)finalTime),
TimeUnit.MILLISECONDS.toSeconds((long)finalTime)- //172-52
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)//toplam saniyeyi dakikaya çeviriyor
finalTime)))
);
textView1.setText(String.format ("%d min,%d sec",
TimeUnit.MILLISECONDS.toMinutes((long)startTime),
TimeUnit.MILLISECONDS.toSeconds((long)startTime)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)//
startTime)))
);
seekBar.setProgress((int) startTime);
myHandler.postDelayed(UpdateSongTime,100);
playPause.setImageResource(R.drawable.pause);
}
else{
mediaPlayer.pause();
isPaused=true;
playPause.setImageResource(R.drawable.start);
}
}
});
}
private Runnable UpdateSongTime = new Runnable() {
@Override
public void run() {
startTime = mediaPlayer.getCurrentPosition();
textView1.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekBar.setProgress((int)startTime);
myHandler.postDelayed(this, 100);
}
};
}
package com.example.myapplication;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.os.Handler;
导入android.view.view;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.SeekBar;
导入android.widget.TextView;
导入androidx.appcompat.app.appcompat活动;
导入java.util.ArrayList;
导入java.util.concurrent.TimeUnit;
公共类MainActivity扩展了AppCompatActivity{
私人按钮;
布尔值是有原因的;
私人音乐大师;
专用双起始时间=0;
私人双最终时间=0;
私有处理程序myHandler=新处理程序();
私人SeekBar SeekBar;
专用int forwardTime=5000;
专用int backwardTime=5000;
私有图像视图播放暂停;
私人媒体播放器;
私有文本视图文本视图1、文本视图2、文本视图3;
公共静态int-oneTimeOnly=0;
公共阵列列表getMusicNames(){
返回音乐名称;
}
公共媒体播放器getMediaPlayer(){
返回媒体播放器;
}
@凌驾
创建时受保护的void(最终捆绑包savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playPause=findViewById(R.id.imageView);
seekBar=findViewById(R.id.seekBar);
textView1=findViewById(R.id.textView1);
textView2=findViewById(R.id.textView2);
textView3=findViewById(R.id.textView3);
textView2.setText(“Song.Mp3”);
Bundle Bundle=getIntent().getExtras();
最终整数位置=bundle.getInt(“位置”);
mediaPlayer=mediaPlayer.create(getApplicationContext(),R.raw.neureich);
seekBar.setClickable(假);
musicNames=新的ArrayList();
musicNames.add(“neureich”);
musicNames.add(“neureichkisa”);
音乐名称添加(“traviscotthighestinthroom”);
如果(!mediaPlayer.isPlaying()){
int u=getResources().getIdentifier(musicNames.get(position),“raw”,“com.example.myapplication”);
mediaPlayer=mediaPlayer.create(getApplicationContext(),u);
}
否则{
mediaPlayer.stop();
mediaPlayer.release();
int u=getResources().getIdentifier(musicNames.get(position),“raw”,“com.example.myapplication”);
mediaPlayer=mediaPlayer.create(getApplicationContext(),u);
mediaPlayer.start();
}
playPause.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
seekBar.setOnSeekbarchaneListener(新的seekBar.onSeekbarchaneListener(){
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser){
如果(来自用户)
mediaPlayer.seekTo(进度);
textView1.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。t分钟((长)开始时间),
时间单位。毫秒。到秒((长)开始时间)-
TimeUnit.MINUTES.toSeconds(TimeUnit.millides.toMinutes((长))//
开始时间)
);
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar){
}
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
}
});
isPaused=false;
如果(!mediaPlayer.isPlaying()){
mediaPlayer.start();
finalTime=mediaPlayer.getDuration();
startTime=mediaPlayer.getCurrentPosition();
if(oneTimeOnly==0){
seekBar.setMax((int)finalTime);
一次性=1;
}
textView3.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。toMinutes((长)finalTime),
时间单位。毫秒。到秒((长)最终时间)-//172-52
TimeUnit.MINUTES.toSeconds(TimeUnit.millizes.toMinutes((长)//toplam saniyeyi dakikayaçeviriyor
最终期限)
);
textView1.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。t分钟((长)开始时间),
时间单位。毫秒。到秒((长)开始时间)-
TimeUnit.MINUTES.toSeconds(TimeUnit.millides.toMinutes((长))//
开始时间)
);
seekBar.setProgress((int)startTime);
postDelayed(UpdateSongTime,100);
playPause.setImageResource(R.drawable.pause);
}
否则{
mediaPlayer.pause();
isPaused=真;
playPause.setImageResource(R.drawable.start);
}
}
});
}
private Runnable UpdateSongTime=new Runnable(){
@凌驾
公开募捐{
startTime=mediaPlayer.getCurrentPosition();
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
public class Parcalar extends AppCompatActivity {
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.parcalar);
listView = findViewById(R.id.listView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("position",position);
startActivity(intent);
}
});
}
}