该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, SeekBar.OnSeekBarChangeListener {
TextView name=null;
TextView time=null;
ListView list=null;
ImageButton bef=null;
ImageButton las=null;
ImageButton stop=null;
SeekBar lev=null;
MyListAdapter listAdapter;
private List allList_= null;
MediaPlayer mediaPlayer=new MediaPlayer();
int p;MP3 mp3;long kk;
@Override
protected void onDestroy() {
super.onDestroy();
mediaPlayer.reset();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(TextView) findViewById(R.id.textView_MusicName);
time=(TextView) findViewById(R.id.time);
list=(ListView)findViewById(R.id.Music_List);
bef=(ImageButton) findViewById(R.id.bef);
las=(ImageButton) findViewById(R.id.las);
stop=(ImageButton) findViewById(R.id.stop);
lev=(SeekBar) findViewById(R.id.seekBar);
time=(TextView) findViewById(R.id.time);
bef.setOnClickListener(this);
las.setOnClickListener(this);
stop.setOnClickListener(this);
lev.setOnSeekBarChangeListener(this);
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
}else {
allList_ = DateUtils.getAllList(MainActivity.this);
listAdapter = new MyListAdapter(this, allList_);
list.setAdapter(listAdapter);
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
p = position;
mp3 = allList_.get(p);
playSong();
}
});
mediaPlayer.setOnCompletionListener(new CompletionListener());
}
private void updateSeekBar(){
runOnUiThread(new Runnable() {
@Override
public void run() {
kk=mediaPlayer.getCurrentPosition();
lev.setProgress((int)kk);
lev.postDelayed(this,1000);
}
});
}
public static String formatTime(long time) {
String min = time / (1000 * 60) + "";
String sec = time % (1000 * 60) + "";
if (min.length() < 2) {
min = "0" + time / (1000 * 60) + "";
} else {
min = time / (1000 * 60) + "";
}
if (sec.length() == 4) {
sec = "0" + (time % (1000 * 60)) + "";
} else if (sec.length() == 3) {
sec = "00" + (time % (1000 * 60)) + "";
} else if (sec.length() == 2) {
sec = "000" + (time % (1000 * 60)) + "";
} else if (sec.length() == 1) {
sec = "0000" + (time % (1000 * 60)) + "";
}
return min + ":" + sec.trim().substring(0, 2);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
time.setText(formatTime(kk));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.seekTo(lev.getProgress());
}
private final class CompletionListener implements MediaPlayer.OnCompletionListener {
@Override
public void onCompletion(MediaPlayer mp) {
if(!mediaPlayer.isPlaying()) {
nextsong();
}
}
}
private void playSong() {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(mp3.getUrl());
mediaPlayer.prepare();
mediaPlayer.start();
lev.setMax(mediaPlayer.getDuration());
updateSeekBar();
} catch (IOException e) {
e.printStackTrace();
}
}
private void nextsong() {
if(p!=list.getCount()-1) {
p++;
mp3 = allList_.get(p);
playSong();
}else{
p=0;
mp3 = allList_.get(p);
playSong();
}
}
public void onClick(View v){
switch(v.getId()){
case R.id.bef:
if(p!=0) {
p--;
mp3 = allList_.get(p);
playSong();
}else {
int d=list.getCount()-1;
mp3 = allList_.get(d);
playSong();
}
break;
case R.id.las:
int l=list.getCount()-1;
if(p!=l) {
nextsong();
}else {
p=0;
mp3 = allList_.get(p);
playSong();
}
break;
case R.id.stop:
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
}else{
mediaPlayer.start();
}
break;
default:break;
}
}
public void onRequestPermissionsResult(int requestCode,String[] permissions ,int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
allList_ = DateUtils.getAllList(MainActivity.this);
listAdapter = new MyListAdapter(this, allList_);
list.setAdapter(listAdapter);
} else {
Toast.makeText(this, "!!!!!", Toast.LENGTH_SHORT).show();
finish();
}
}
}
}