关于 Android 获取本地音频的坑2
来源:互联网 发布:ug铣螺纹编程 编辑:程序博客网 时间:2024/05/16 15:26
private void findLocalAudio(Intent data) { Uri uri = data.getData(); String filePath = GetPathFromUri4kitkat.getPath(RecordingActivity.this, uri); MediaScannerConnection.scanFile(RecordingActivity.this, new String[]{filePath}, null, new ScanCompletedListener()); } private void chooseLocalAudio(String choosePath) { ContentResolver contentResolver = this.getContentResolver(); AttachBean attachBean = new AttachBean(); if (contentResolver != null) { Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); if (cursor != null) { if (cursor.moveToFirst()) { do { String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); String localAudioPath = new File(filePath).toString(); if (localAudioPath.equals(choosePath)) { String displayName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); long dateAdded = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DATE_ADDED)) * 1000; String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); if (duration <= 0) { Toast.makeText(this, "音频损坏", Toast.LENGTH_SHORT).show(); } attachBean.setAttachType(AttachColumns.Type.AUDIO); attachBean.setAddTime(dateAdded); attachBean.setCreateTime(String.valueOf(dateAdded)); attachBean.setCloud(false); attachBean.setFileSize(String.valueOf(size)); attachBean.setFilePath(localAudioPath); attachBean.setLocalDisplayName(Uri.decode(displayName)); attachBean.setTotalTime(String.valueOf(duration)); attachBean.setTitle(title); OfflineCreateActivity.startOfflineCreateActivity(RecordingActivity.this, attachBean); } } while (cursor.moveToNext()); } cursor.close(); } } }
private class ScanCompletedListener implements MediaScannerConnection.OnScanCompletedListener { @Override public void onScanCompleted(String path, Uri uri) { if (path != null) { switch (path.substring(path.lastIndexOf("."))) { case ".mp3": case ".ogg": case ".wav": chooseLocalAudio(path); break; default: ToastUtils.show(RecordingActivity.this, "音频格式暂时只支持主流的 mp3 ogg wav"); break; } } } }
0 0
- 关于Android获取本地音频的坑
- 关于 Android 获取本地音频的坑2
- directshow 获取本地音频
- directshow 获取本地音频
- Android关于本地多媒体(图片、视频、音频)Media的选择总结
- 获取本地音频文件 FreeStreamer播放本地音频
- 关于xcode本地,网络的视频,音频不播放
- Android MediaRecorder获取音频流的方法
- Android获取、设置音频的音量大小
- Android播放本地视频音频
- 关于写android音频方面的应用
- 关于控制android音频流的音量
- Android 图片和音频的本地保存方式
- android的本地音频播放问题....为什么不能播放音乐?
- Android 获取音频焦点
- MediaRecoder分别获取音频、视频保存本地
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- PAT_乙级 1034 有理数四则运算
- linux的top命令参数详解
- 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统
- HDU 1000 A + B Problem (Java)
- An Improved Reflective DLL Injection Technique
- 关于 Android 获取本地音频的坑2
- MySQL行级锁、表级锁、页级锁详细介绍
- 百度地图InfoWindow事件绑定
- 常见sql整理 常见hive sql整理
- android 跑马灯效果 自定义View
- CAS SSO改造步骤(3)
- linux下mysql默认安装目录和常用命令
- 网络 应用层
- jQuery的ajax怎么使用?