@Override public void onCompletion(MediaPlayer player) { index++; if(index>=MainActivity.list.size())index=0; Play(); Message mm=Message.obtain(); mm.what=200; mm.arg1=index; MainActivity.hh.sendMessage(mm); }这段代码是什么意思
时间: 2023-02-07 14:21:26 浏览: 66
这段代码是 Java 代码,是一个 `onCompletion` 方法的实现。
`@Override` 是一个 Java 注解,表示这个方法是重写父类的方法。
`public void onCompletion(MediaPlayer player)` 定义了这个方法的访问权限是 `public`(公共的,对所有类可见),返回值是 `void`(无返回值),方法名是 `onCompletion`,参数是一个 `MediaPlayer` 类型的对象 `player`。
方法体中的代码会在 `MediaPlayer` 播放完毕时执行。
首先,定义一个变量 `index`。
然后,判断 `index` 是否大于等于 `MainActivity.list` 的大小,如果是,就将 `index` 赋值为 0。
接着,调用 `Play` 方法。
最后,创建一个 `Message` 对象 `mm`,设置它的属性 `what` 为 200,`arg1` 为 `index`,并将 `mm` 发送给 `MainActivity.hh`。
相关问题
public boolean musicIsPlaying(){ if(mediaPlayer != null){ return mediaPlayer.isPlaying(); }else{ return false; } } public void servicePlayMusic(List<Music> musicList, int start) { try { int size = musicList.size(); if(mediaPlayer == null){ mediaPlayer = new MediaPlayer(); } mediaPlayer.stop(); mediaPlayer.reset(); mediaPlayer.setDataSource(musicList.get(start).getFile().getAbsolutePath()); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); musicName = musicList.get(start).getName(); if(musicTimeThread == null){ musicTimeThread = new MusicTimeThread(); musicTimeThread.start(); }else{ musicTimeThread.resumeThread(); } } }); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { servicePlayMusic(musicList, (start+1)%size ); musicTimeThread.pauseThread(); } }); }catch (IOException e){ e.printStackTrace(); } }
这段代码实现了一个 Service 播放音乐的功能,其中 `musicIsPlaying()` 方法用于判断当前是否正在播放音乐,`servicePlayMusic()` 方法用于播放音乐。
具体实现如下:
1. `musicIsPlaying()` 方法:如果 `mediaPlayer` 对象不为空,那么调用 `isPlaying()` 方法判断当前是否正在播放音乐,如果是,返回 `true`,否则返回 `false`。
2. `servicePlayMusic()` 方法:首先获取音乐列表的大小 `size`,然后创建一个 `MediaPlayer` 对象(如果该对象为空),并停止当前正在播放的音乐(如果有的话)。接着,设置 `MediaPlayer` 对象的数据源为当前要播放的音乐文件,调用 `prepareAsync()` 方法异步准备播放,等待 `OnPreparedListener` 监听器回调。在 `OnPreparedListener` 监听器中,调用 `start()` 方法开始播放音乐,并启动一个 `MusicTimeThread` 线程计算音乐播放时长。如果 `MusicTimeThread` 线程为空,那么创建并启动它,否则恢复它的执行。同时,设置 `MediaPlayer` 对象的 `OnCompletionListener` 监听器,当音乐播放完成时,递归调用 `servicePlayMusic()` 方法播放下一首音乐,并暂停 `MusicTimeThread` 线程。
需要注意的是,为了避免在 Service 中播放音乐时被系统回收,应该将 Service 设置为前台 Service,并在通知栏中显示当前正在播放的音乐信息。此外,为了避免在 Service 中执行耗时操作导致 ANR,建议将音乐播放和计算时长等操作放在子线程中执行。
public String loadAllJson01(String keyword) { List<Goods> list = goodsdao.list1(keyword); if(list.size()>0){ JSONArray jsonarr = JSONArray.fromObject(list); return jsonarr.toString(); }else{ return null; } } @Override public String loadAllJson02(String keyword) { List<Goods> list = goodsdao.list2(keyword); if(list.size()>0){ JSONArray jsonarr = JSONArray.fromObject(list); return jsonarr.toString(); }else{ return null; } } @Override public String loadAllJson03(String keyword) { List<Goods> list = goodsdao.list3(keyword); if(list.size()>0){ JSONArray jsonarr = JSONArray.fromObject(list); return jsonarr.toString(); }else{ return null; } } @Override public String loadAllJson04(String keyword) { List<Goods> list = goodsdao.list4(keyword); if(list.size()>0){ JSONArray jsonarr = JSONArray.fromObject(list); return jsonarr.toString(); }else{ return null; } } @Override public String loadAllJson05(String keyword) { List<Goods> list = goodsdao.list5(keyword); if(list.size()>0){ JSONArray jsonarr = JSONArray.fromObject(list); return jsonarr.toString(); }else{ return null; } }
这是一个 Java 类中的几个方法,用于根据关键字查询商品列表并将结果转换为 JSON 格式返回。这里使用了 DAO 层的方法(list1、list2 等)查询数据库中的商品数据,如果查询结果不为空,则将其转换为 JSON 格式返回,否则返回 null。这些方法分别对应了不同的查询条件,可能是根据商品名称、价格、品牌等进行查询。