1.將String 路徑解析成Uri的方法:
public Uri queryUriforAudio(String path) { File file = new File(path); Log.i("TEST","-------->path: "+path); final String where = MediaStore.Audio.Media.DATA + "='"+file.getAbsolutePath()+"'"; Cursor cursor = this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, where, null, null); if (cursor == null) { Log.d("uritest", "queryUriforAudio: uri为空 1"); return null; } int id = -1; if (cursor != null) { cursor.moveToFirst(); if (!cursor.isAfterLast()) { id = cursor.getInt(0); } cursor.close(); } if(id==-1) { Log.d("uritest", "queryUriforAudio: uri为空 2"); return null; } return Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, String.valueOf(id)); }
2.播放音頻:
/** * play default notification sound * * @return MediaPlayer object */ @Override public void playNotificationSound() { uriMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); ringMedia = RingtoneManager.getRingtone(context, uriMedia); ringMedia.play(); } /** * play default ring sound * * @return MediaPlayer object */ @Override public void playDefaultRingSound() { uriCallMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); ringCallMedia = RingtoneManager.getRingtone(context, uriCallMedia); ringCallMedia.play(); } /** * play specific ring sound * * @return MediaPlayer object */ @Override public void playRingSound(Uri ringtongUri,int duratoinMs) { cancelTimer(); mTimer = new Timer(); initialTimer(duratoinMs); mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(context,ringtongUri); mediaPlayer.prepare(); mediaPlayer.setLooping(true); } catch (IOException e) { e.printStackTrace(); } mediaPlayer.start(); isPlaying = true; } /** * play default alarm sound * * @return MediaPlayer object */ @Override public void playDefaultAlarmSound() { uriAlarmMedia = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); ringAlarmMedia = RingtoneManager.getRingtone(context, uriAlarmMedia); ringAlarmMedia.play(); } /** * play specific alarm sound * * @return MediaPlayer object */ @Override public void playAlarmSound(Uri ringtongUri,int duratoinMs){ cancelTimer(); mTimer = new Timer(); initialTimer(duratoinMs); mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(context,ringtongUri); mediaPlayer.prepare(); mediaPlayer.setLooping(true); } catch (IOException e) { e.printStackTrace(); } mediaPlayer.start(); } /** * stop notification sound */ @Override public void stopNotificationSound() { if (ringMedia != null) { ringMedia.stop(); } } /** * stop ring sound */ @Override public void stopDefaultRingSound() { if (ringCallMedia != null) { ringCallMedia.stop(); } } /** * stop alarm sound */ @Override public void stopDefaultAlarmSound() { if (ringAlarmMedia != null) { ringAlarmMedia.stop(); } }
相关推荐
一个丰富的音乐播放封装库,针对快速集成音频播放功能,你值得拥有。 中文文档 Features Easily play local and web audio. Implement audio services based on IPC, reduce app memory peaks, and avoid OOM. ...
"android driver.rar"这个压缩包可能包含了关于Android驱动开发的相关资料,让我们来深入探讨一下Android驱动程序及其重要性。 一、Android驱动程序概述 Android驱动程序是Android操作系统的核心组成部分,它们负责...
对于.mp3、.wav等音频文件,`MediaPlayer`类是基本的播放工具。对于.mp4、.avi等视频文件,可以使用`MediaPlayer`或`ExoPlayer`。`MediaMetadataRetriever`可以提取音频和视频的元数据。 6. **文档处理** 对于....
至于压缩包中的"Clock"文件,这可能是应用的APK安装文件或者相关资源文件,包含应用的代码、图片、音频等组成部分。如果需要进一步了解或修改应用,可能需要对这些文件进行解压和分析,但这通常需要一定的编程和技术...
它集成了强大的ARM Cortex-A9处理器,支持最新的Android版本,并具有丰富的多媒体功能。 ### 构建系统 构建系统部分详细介绍了如何为MT6575平台搭建开发环境,包括编译内核、应用程序和其他必要的组件。这通常涉及...
- **多媒体处理**:包括音频和视频的播放、录制及编辑技术,以及如何在应用中集成摄像头功能。 ##### 4. **性能优化与调试** - **性能分析工具**:教授如何使用Android Studio内置的工具来监控和优化应用性能,...
适合人群:本资源适用于具备一定的Android开发基础的开发者,特别是对音频处理和多媒体操作感兴趣的人群。学习收益:多媒体处理:通过本资源,您将学习如何在Android平台上处理音频和视频文件,了解多媒体文件的格式...
"Android熊猫文件管理器"是一款专为Android操作系统设计的高效、易用的文件管理应用。它提供了丰富的功能,帮助用户轻松地浏览、组织、管理和优化设备上的文件。通过这款文件管理器,用户可以深入理解Android系统的...
本文将深入探讨Android安卓文件管理器的相关知识点,包括其功能、操作方式以及如何优化文件管理体验。 1. 文件管理器的基本功能: - 浏览:文件管理器可以浏览设备内部存储、外部SD卡(如果支持)、下载目录以及...
总的来说,Android来电拦截和提示音的源码分析涉及了Android的电话服务、事件监听、音频播放等多个核心模块。通过深入研究这些源码,开发者不仅可以了解Android系统的工作原理,还能学习如何定制和优化通话相关的...
8. **媒体播放**:部分文件浏览器还内置了媒体播放器,可以直接在应用内播放音频和视频文件。 9. **主题和语言支持**:为了提升用户体验,文件浏览器往往提供多种主题和语言设置,以适应不同用户的偏好。 10. **...
在Android系统中,文件管理器是一个非常重要的组件,它允许用户查看、操作和管理设备上的文件和目录。这个源代码提供了深入理解Android如何处理文件和目录的内部机制的机会。让我们一起探讨一下Android文件管理器...
本文将深入探讨基于Android实现的文件管理器的相关知识点,这对于Android开发人员来说是一个宝贵的资源。 首先,我们要了解Android的文件系统。Android采用Linux内核,因此其文件系统基于典型的Linux文件权限模型,...
此外,文档还涵盖了与Android AOSP系统集成相关的其他主题,包括系统构建(Build System)、项目克隆(Project Clone)、项目配置(Project Configuration)、EMI(嵌入式多媒体接口)、EMMC(嵌入式多媒体卡)配置...
下面我们将深入探讨Android源码的相关知识点,以及在开发游戏时可能会涉及的技术。 1. **Android SDK**: Android应用程序的基础是Android Software Development Kit (SDK),它包含了开发者需要构建、调试和发布...
"eleven"可能代表Android版本,意味着这个项目包含了针对Android 11的设备配置和优化,以确保OnePlus SDM845设备在新操作系统版本下的兼容性和稳定性。 深入分析,我们可以推测这个项目可能包含以下关键组件: 1. ...
这份文件标题为《Driver_All_in_One_V1.0_MT6735_6753.pdf》,这似乎是一份针对MT6735和MT6753平台的驱动程序集合的资料文件。文件的描述非常简单,只重复了标题。标签则直接指出是关于MT6735和6753的驱动程序。 ...
首先,Android的音乐播放功能主要依赖于`MediaPlayer`类,这是一个强大的音频、视频播放器接口。`MediaPlayer`提供了多种方法来控制音乐播放,包括播放、暂停、停止以及设置播放模式。 1. 单曲循环(Repeat One):...
6. **多媒体支持**: 包括音频、视频编码解码器的详细信息,以及如何使用`MediaPlayer`和`ExoPlayer`进行媒体播放。 7. **网络编程**: 提供了网络连接和数据同步的API,如`HttpURLConnection`和`Volley`库的使用。 ...