android - 如何定期检查一些东西?

标签 android

初学者,我有一个简单的问题。

在 Android 中,定期检查什么是最好的?

请耐心等待,我会尽力解释 --

例如,我的音频应用非常简单,一个主要 Activity 和一个服务。主要 Activity 有一个带有两个按钮的用户界面,启动和停止音频。我按下启动键,音频服务启动。同样,当我单击“停止”时,服务停止并且音频结束。如果 isLooping() 被硬编码为 true 则没有问题,因为音频永远不会结束,除非我按下停止按钮,这会停止音频服务并重置按钮状态。

现在这是一个问题,因为我将 isLooping() 设置为 false,因此音频不会循环播放。因此音频将停止播放但服务仍在运行。

我希望能够检测到音频何时停止,以便我可以设置 UI 按钮的状态。所以我需要一些始终检查音频是否正在播放的东西(即检查 player.isPlaying() 以便我可以结束服务并设置按钮的启用/禁用状态。

我想出了绑定(bind)到服务的方法,这样我就可以通过我的主要 Activity 访问 MediaPlayer 控件,所以我知道检查它是否正在播放的代码,但是我把这段代码放在哪里以便检查所有时间?

我说的有道理吗?我知道这可能很简单。感谢您的帮助。

最佳答案

您可以使用 TimerTask 和 Timer 重复它。代码如下:

public final void RepeatSoundFunction(){ 

      t = new Timer();
      tt = new TimerTask() {

          @Override
          public void run() {
              mp.seekTo(0); //Reset sound to beginning position
              mp.start();  //Start the sound
              t.purge();  //Purge the sound
          }

      };
      t.schedule(tt, 10*1000); //Schedule to run tt (TimerTask) again after 10 seconds         
}

然后你设置一个 MediaPlayer onCompletionListener 并把它放在那里。

在运行代码中,您可以检查除 音乐,我只是用音频来展示一个例子。

关于android - 如何定期检查一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383439/

相关文章:

android - 如何确定 Android MediaFormat.KEY_SAMPLE_RATE 的值

java - GsonConverter 未解决

java - Android 使用 GCM 和 PHP 将通知从设备发送到其他设备

当网络调用完成时Java同步返回

java - 数据结构ArrayList中的高效搜索

android - 像在 google+ 中一样重新创建 UI 滚动

java - 如何在用户释放按键后隐藏默认的 Android 软键盘

android - FFmpegMediaPlayer : findLibrary returned null

android - AutoCompleteTextView 改变下划线颜色

java - 在 Android 数据绑定(bind)中将 "custom conversions"与 @BindingConversion 放在哪里?为什么?