java - Android Java:更新seekbar以在播放音频文件时显示进度

标签 java android audio runnable

这是我的第一个Android / Java应用程序。我正在使用第一个答案here尝试启动重复任务,更新了搜索栏(“timeSlider”)以在播放音频文件时显示进度。这是我的代码(消除了一些不相关的行):

 private int timeSliderInterval = 1000; // 1 second
 private Handler timeSliderHandler;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_play);
     Intent intent = getIntent();
     Runnable doUpdateTimeSlider = new Runnable() {
         @Override
         public void run() {
             timeSliderHandler.postDelayed(doUpdateTimeSlider, timeSliderInterval);
             updateTimeSlider();
         }
     };

     void startUpdateTimeSlider() {
         doUpdateTimeSlider.run();
     }

     void stopUpdateTimeSlider() {
         timeSliderHandler.removeCallbacks(doUpdateTimeSlider);
     }

     final SeekBar timeSlider = (SeekBar) findViewById(R.id.timeSlider);

     if (timeSlider != null) {
         timeSliderHandler = new Handler();
         startUpdateTimeSlider();
     }

     @Override
     public void onDestroy() {
         super.onDestroy();
         stopUpdateTimeSlider();
     }

该项目不会显示在模拟器中。工具提示显示以下错误:

enter image description here

另外,startUpdateTimeSliderstopUpdateTimeSlider函数在工具提示中显示此错误:

enter image description here

另外,在“运行”窗口中,我得到:

emulator: emulator window was out of view and was recentered

emulator: ERROR: _factory_client_recv: Unknown camera factory query name in ' '



任何帮助将不胜感激!

最佳答案

第一个问题是自我解释,您需要添加final修饰符。

final Runnable doUpdateTimeSlider = ...

第二个-移动startUpdateTimerSlider()方法,现在在onCreate()方法内部

看起来您错过了}:
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_play);
 Intent intent = getIntent();
 Runnable doUpdateTimeSlider = new Runnable() {
     @Override
     public void run() {
         timeSliderHandler.postDelayed(doUpdateTimeSlider, timeSliderInterval);
         updateTimeSlider();
     }
 };
}//<--------HERE

 void startUpdateTimeSlider() {
     doUpdateTimeSlider.run();
 }

关于java - Android Java:更新seekbar以在播放音频文件时显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41413177/

相关文章:

reactjs - 跨域读取阻塞 (CORB) 阻止了 React 应用程序上的跨域响应

javascript - 音频自动播放一次

java - 修改jar文件的合规级别

Java OutputStream 读取字符串行

java - 如何禁用使用 Apache POI 生成的 Excel 文件的保护模式?

java - JSR-292(invokedynamic)对 Groovy 性能有多大影响?

java - setText(String) 不适用于 TextView

Android - 如何使用relativelayout来定位这个自定义气球 View

java - 我怎样才能杀死android中的其他前台 Activity ?

web-applications - 如何在网络浏览器中弹奏乐器笔记?