通过MediaPlayer 的 getDuration() 是可以获取MP3的播放时长,
但是遍历MP3文件的时候就需要new 一个player 对象不知道还有没有其他方式获取MP3文件播放时长下面是我的代码
public static MediaPlayer player;/**
* 获取音乐播放时长
* @return
*/
private String getMusicTime() {
int musicTime = player.getDuration() / 1000;
return musicTime / 60 + ":" + musicTime % 60;
}
但是遍历MP3文件的时候就需要new 一个player 对象不知道还有没有其他方式获取MP3文件播放时长下面是我的代码
public static MediaPlayer player;/**
* 获取音乐播放时长
* @return
*/
private String getMusicTime() {
int musicTime = player.getDuration() / 1000;
return musicTime / 60 + ":" + musicTime % 60;
}
解决方案 »
- PC跟手机用蓝牙通信,实现远程命令控制电脑,可行性如何,难度大不?
- Android手机如何查看最后一次关机时间?或者上次关机之前运行时间?
- 布局问题
- AlertDialog.Builder
- onKeyDown事件中转换键值的问题
- 关于ListView分页加载的问题
- 想问一下android连接PC数据库的问题
- 关于adb push文件到指定用户
- android ndk 调试
- Android下usb host接口插入usb设备时,如何屏蔽usb权限的提示框? 如何自动获取usb设备的权限?
- android应用开发如何远程连接数据库,求助,讲个大概就行!
- 急!帮忙看看为什么我用shell编译的apk不将drawable-ldpi打包进去
时长是放在media的数据库的
是不是先遍历音乐文件,然后把音乐文件的信息保存到数据库里然后以后每次生成activity 绑定listview 时,都匹配下数据库信息然后有新的音乐文件作更新?这样也觉得繁琐有没有直接得到文件了,可以直接读取时长的方法
String[] mCursorCols = new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION }; mCursor = getContentResolver().query(MUSIC_URL, mCursorCols,
null, null, null);
// 获取歌曲播放时长
public int getDurationByPosition(Cursor c, int position) {
c.moveToPosition(position);
int durationIndex = c.getColumnIndex(MediaStore.Audio.Media.DURATION);
int info = c.getInt(durationIndex) / 1000;
return info;
}
就是数据库中标示播放时长的字段。
直接读出来,遍历cursor就可以取到了。
你说的new 一个player 对象是在取得正在播放的那首音乐的时长。
暂时先不研究了,谢谢 ameyume
@Override
public void onPrepared(MediaPlayer mp) {
long duration = videoView.getDuration();
}
});