السلام عليكم
لي ثلاثة ايام ابحث عن الحل في قوقل ولم اجد بحكم قلة الخبرة والمعرفة في البرمجة
هذا الكود لتشغيل الصوت
واتمنى مساعدتي في فهم عرض وقت الصوت والمنقضى منه
tv1 لبداية الوقت و tv2 لنقص الوقت كما يأتي في مشغلات الصوت
package com.example.timers_1;
import java.io.File;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener, OnCompletionListener, OnBufferingUpdateListener ,OnTouchListener, OnSeekBarChangeListener {
private MediaPlayer mediaPlayer;
TextView tv1,tv2;
Button bt1,bt2,bt3,stopBtn;
SeekBar seekBarProgress;
Thread thread;
int position = 0;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.But1);
bt2 = (Button) findViewById(R.id.But2);
bt3 = (Button) findViewById(R.id.But3);
stopBtn = (Button) findViewById(R.id.stopBtm);
tv1 = (TextView) findViewById(R.id.numLeftText);
tv1.setOnTouchListener(this);
tv2 = (TextView) findViewById(R.id.numRightText);
tv2.setOnTouchListener(this);
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
bt3.setOnClickListener(this);
stopBtn.setOnClickListener(this);
seekBarProgress = (SeekBar)findViewById(R.id.seekBar1);
seekBarProgress.setOnTouchListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
}
@Override
public void onClick(View v) {
if(v == findViewById(R.id.But1)){
try
{
mediaPlayer.reset();
mediaPlayer.setDataSource("/sdcard/001.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnPreparedListener(new OnPreparedListener()
{
@Override
public void onPrepared(final MediaPlayer mp)
{
seekBarProgress.setMax(mediaPlayer.getDuration());
thread= new Thread(new Runnable() {
@Override
public void run() {
if(!Thread.interrupted()){
try{
while(mediaPlayer!=null && mediaPlayer.isPlaying())
{
seekBarProgress.setProgress(mediaPlayer.getCurrentPosition());
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
} mHandler.post(new Runnable() {
@Override
public void run() {
}
});
}
}
catch (IllegalStateException e) {
}
}
}
});
thread.start();
}
});
}
catch(Exception e)
{
e.printStackTrace();
}
}else if (v== findViewById(R.id.stopBtm)){
Toast.makeText(this, "stopBtm", Toast.LENGTH_LONG).show();
mediaPlayer.reset();
seekBarProgress.setMax(0);
}
mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
}
});
}
@Override
public void onBufferingUpdate(MediaPlayer arg0, int percant) {
}
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
//mediaPlayer.start();
mediaPlayer.seekTo(position);
seekBarProgress.setMax(0);
}
@Override
public boolean onTouch(View v, MotionEvent me) {
// TODO Auto-generated method stub
return false;
}
public void onStop() {
super.onStop();
// Log.v("CustomAudioPlayer","onStop Called");
mediaPlayer.stop();
mediaPlayer.release();
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
}
}