IDK why but after just coping the entier mainactivty.java file from this video
IDK why my seek bar and timetable are not showing any progress
there is an exception I have 2 audio files but the video show has only one so I have doubled all the methods also the onClick and a dialog which is different from it
MainActivity.java
public class MainActivity extends AppCompatActivity { MediaPlayer player1; MediaPlayer player2; SeekBar seekBar1; SeekBar seekBar2; TextView elapsedTimeLable1; TextView elapsedTimeLable2; TextView remainingTimeLable1; TextView remainingTimeLable2; ImageView play1; ImageView play2; int totalTime1; int totalTime2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // PlayButton * The ButtonClick is in the last if you want to jump directly there * play1 = findViewById(R.id.playbtn1); play2 = findViewById(R.id.playbtn2); // TimeLables elapsedTimeLable1 = findViewById(R.id.cTime1); elapsedTimeLable2 = findViewById(R.id.cTime2); remainingTimeLable1 = findViewById(R.id.tTime1); remainingTimeLable2 = findViewById(R.id.tTime2); // MediaPlayer player1 = MediaPlayer.create(this, R.raw.dog_howl); player1.setLooping(true); player1.seekTo(0); totalTime1 = player1.getDuration(); player2 = MediaPlayer.create(this, R.raw.dog_bark); player2.setLooping(true); player2.seekTo(0); totalTime2 = player2.getDuration(); //SeekBar seekBar1 = findViewById(R.id.seekbar1); seekBar2 = findViewById(R.id.seekbar2); seekBar1.setMax(totalTime1); seekBar2.setMax(totalTime2); seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress1, boolean fromUser1) { if (fromUser1) { player1.seekTo(progress1); seekBar1.setProgress(progress1); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress2, boolean fromUser2) { if (fromUser2) { player2.seekTo(progress2); seekBar2.setProgress(progress2); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); // Thread (Update SeekBar & TimeLabel) new Thread(() -> { while (player1 != null) { try { Message msg = new Message(); msg.what = player1.getCurrentPosition(); handler1.sendMessage(msg); Thread.sleep(1000000000); } catch (InterruptedException e) { } } }).start(); new Thread(() -> { while (player2 != null) { try { Message msg = new Message(); msg.what = player2.getCurrentPosition(); handler2.sendMessage(msg); Thread.sleep(1000000000); } catch (InterruptedException e) { } } }).start(); // Admob Banner Ad MobileAds.initialize(this, initializationStatus -> { }); AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); // Caution dialog SharedPreferences preferences = getSharedPreferences("prefs", MODE_PRIVATE); boolean firstStart = preferences.getBoolean("firstStart", true); if (firstStart) { showDialog(); } } // Caution dialog private void showDialog() { new AlertDialog.Builder(this) .setTitle("Caution!") .setMessage("In case you're wearing any kind of headphones please remove it before playing the ' Howl ' audio") .setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }) .create().show(); SharedPreferences preferences = getSharedPreferences("prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("firstStart", false); editor.apply(); } private Handler handler1 = new Handler() { @Override public void handleMessage(@NonNull Message msg) { int currentPosition1 = msg.what; //Update SeekBar seekBar1.setProgress(currentPosition1); // Update Timelable String elapsedTime1 = createTimerLable1(currentPosition1); elapsedTimeLable1.setText(elapsedTime1); String remainingTime1 = createTimerLable1(totalTime1 - currentPosition1); remainingTimeLable1.setText("- " + remainingTime1); } }; private Handler handler2 = new Handler() { @SuppressLint("SetTextI18n") @Override public void handleMessage(@NonNull Message msg) { int currentPosition2 = msg.what; // Update SeekBar seekBar2.setProgress(currentPosition2); // Update Timelable String elapsedTime2 = createTimerLable2(currentPosition2); elapsedTimeLable2.setText(elapsedTime2); String remainingTime2 = createTimerLable2(totalTime2 - currentPosition2); remainingTimeLable2.setText("- " + remainingTime2); } }; public String createTimerLable1(int duration) { String timerLabel1 = ""; int min = duration / 1000 / 60; int sec = duration / 1000 % 60; timerLabel1 += min + ":"; if (sec < 10) timerLabel1 += "0"; timerLabel1 += sec; return timerLabel1; } public String createTimerLable2(int duration) { String timerLabel2 = ""; int min = duration / 1000 / 60; int sec = duration / 1000 % 60; timerLabel2 += min + ":"; if (sec < 10) timerLabel2 += "0"; timerLabel2 += sec; return timerLabel2; } public void playBtnClick1(View view) { if (player2.isPlaying()) { player2.pause(); play2.setImageResource(R.drawable.ic_baseline_play_circle_filled_24); } if (!player1.isPlaying()) { // Stoping player1.start(); play1.setImageResource(R.drawable.ic_baseline_pause_circle_filled_24); } else { // Playing player1.pause(); play1.setImageResource(R.drawable.ic_baseline_play_circle_filled_24); } } public void playBtnClick2(View view) { if (player1.isPlaying()) { player1.pause(); play1.setImageResource(R.drawable.ic_baseline_play_circle_filled_24); } if (!player2.isPlaying()) { // Stoping player2.start(); play2.setImageResource(R.drawable.ic_baseline_pause_circle_filled_24); } else { // Playing player2.pause(); play2.setImageResource(R.drawable.ic_baseline_play_circle_filled_24); } } }
Advertisement
Answer
So well why should threads sleep 1000000000 milliseconds. In that case your thread does its tasks every 1000000 seconds.
1000000000 ms => 1000000 sec => 16666 min => 277 hour
So your thread does its task every 277 hours. The param of sleep is millisecond so put st like 1000(1 second) or something like that which is a lot shorter. If this wasn’t solution let me know.