package com.music.zds; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; import android.os.Message; import android.util.Log; import java.util.Timer; import java.util.TimerTask; public class MusicService extends Service { public static final String TAG="MusicService"; public MediaPlayer player; private Timer timer; public MusicService() { Log.d(TAG,"MusicService"); } @Override public void onCreate() { super.onCreate(); player=new MediaPlayer(); } @Override public IBinder onBind(Intent intent) { Log.d(TAG,"MusicService()"); return new MusicControler(); } public void addTimer(){ if(timer ==null){ TimerTask task = new TimerTask() { @Override public void run() { if(player == null) return;; int duration = player.getDuration(); int currentPro = player.getCurrentPosition(); Log.w(TAG,"duration:"+duration+",progress:"+currentPro); Message msg = MainActivity.handler.obtainMessage(); Bundle bundle = new Bundle(); bundle.putInt("duration",duration); bundle.putInt("progress",currentPro); msg.setData(bundle); MainActivity.handler.sendMessage(msg); } }; timer.schedule(task,5,500); } } class MusicControler extends Binder{ public void play(){ Log.d(TAG,"play"); try{ player.reset(); player=MediaPlayer.create(getApplicationContext(),R.raw.nianlun,R.raw.jimoyanhuo); player.start(); addTimer(); } catch (Exception e){ e.printStackTrace(); } } public void pause(){ Log.d(TAG,"pause"); player.pause(); } public void continueplay(){ Log.d(TAG,"continueplay"); player.start(); } public void seekTo(int progress){ Log.d(TAG,"seekTo"+progress); player.seekTo(progress); } } @Override public void onDestroy(){ super.onDestroy(); if (player == null) return;; if(player.isPlaying())player.stop(); player.release(); player=null; } }
时间: 2024-02-15 13:27:07 浏览: 34
这是一个 Android 应用程序中的 Service 类,用于播放音乐。它实现了 MediaPlayer 播放器,并提供了一个 Binder 类 MusicControler,用于控制音乐的播放、暂停、继续播放和进度调整等操作。在 onCreate() 方法中初始化了 MediaPlayer 对象,在 onBind() 方法中返回了 MusicControler 实例。在 addTimer() 方法中设置了定时任务,用于定时获取音乐的播放进度,并将进度信息通过 Message 和 Bundle 发送给 MainActivity。在 MusicControler 中的各个方法中调用了 MediaPlayer 对象的相应方法,用于控制音乐的播放进度。在 onDestroy() 方法中释放了 MediaPlayer 对象的资源。
相关问题
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
问题:Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext是什么原因导致的?如何解决?
回答:Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext是由于找不到org.springframework.context.ApplicationContext类而引起的错误。\[3\]解决这个问题的方法是确保正确导入了spring-context的依赖。可以通过在pom.xml文件中添加以下依赖来解决这个问题:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>版本号</version>
</dependency>
请将版本号替换为您所使用的spring-context版本。这样就可以解决找不到ApplicationContext类的问题。
#### 引用[.reference_title]
- *1* *3* [Caused by: java.lang.ClassNotFoundException问题总结](https://blog.csdn.net/qq_46411309/article/details/119251075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context](https://blog.csdn.net/zds18205657013/article/details/112724121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
vue.runtime.esm.js:1888 TypeError: Cannot read properties of undefined (reading 'length')
该错误通常是因为在代码中使用了未定义的属性或方法,导致无法读取属性。在引用和引用中提到了此错误。具体来说,该错误是由调用resetFields()函数时出现的,但该函数的上下文对象未定义所导致的。同样,引用中也提到了类似的错误,其中forEach()方法无法在未定义的对象上调用。这些错误提示可能与Vue框架的运行时代码有关。
要解决此问题,需要检查代码中是否正确地定义了相关属性和方法,并确保在调用它们之前进行了正确的初始化。在这种情况下,可能需要检查resetFields()函数和expandRowKeys属性是否正确定义和初始化。可以尝试在代码中找到这些错误的调用点,并检查其上下文对象是否正确。
此外,还可以查看Vue框架的官方文档或相关资源,以了解如何正确使用和初始化这些属性和方法。根据具体的应用场景和代码结构,可能需要进一步调试和查找错误的根本原因。
综上所述,要解决vue.runtime.esm.js:1888 TypeError: Cannot read properties of undefined (reading 'length')的错误,可以通过检查代码中相关属性和方法的定义和初始化来解决问题。如果需要进一步的帮助,请参考Vue框架的官方文档或向相关的开发社区提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [使用 vue 时犯过的小错误](https://blog.csdn.net/W936438835/article/details/126759943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [vue.runtime.esm.js:1888 TypeError: Cannot read property ‘forEach‘ of undefined at VueComponent.](https://blog.csdn.net/tonysh_zds/article/details/107999199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]