android mediaplayer - 播放一次铃声

2023-12-02

我尝试使用 MediaPlayer 类播放一次设备铃声(我必须使用 MediaPlayer,因为我将铃声与应用程序中的其他音频源一起使用)所以我尝试以下方法来播放随机铃声,但我无法阻止它循环,它继续播放。是否可以使用 MediaPlayer 只播放一次铃声?

Thanks

try {
    RingtoneManager mRing = new RingtoneManager(RingtoneActivity.this);
    int mNumberOfRingtones = mRing.getCursor().getCount();
    Uri mRingToneUri = mRing.getRingtoneUri((int) (Math.random() * mNumberOfRingtones));
    mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setDataSource(RingtoneActivity.this, mRingToneUri);
    mMediaPlayer.prepare();
    mMediaPlayer.setLooping(false);
    mMediaPlayer.start();

} catch (Exception ignore) {
}

UPDATE:

我刚刚发布了一个新的question与此相关,因为我能够在我的案例中找到问题的具体原因。


我找到了使用事件的简单解决方案 - 确认答案,因为它解决了您的问题:)

mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
                    @Override
                    public void onSeekComplete(MediaPlayer mediaPlayer) {
                        mediaPlayer.stop();
                    }
                });

http://developer.android.com/reference/android/media/MediaPlayer.html

记住release()。

            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    mediaPlayer.release();
                }
            });

您想要使用的完整代码需要将铃声设置为您想要的内容。

        AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
        int volume = audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(view.getContext());
        Uri notificationSoundUri = Uri.parse(prefs.getString("notification_sound", "DEFAULT_SOUND"));

        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(view.getContext(), notificationSoundUri);
        } catch (Exception e1) {
            e1.printStackTrace();
            mediaPlayer.release();
            return;
        }
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();
            }
        });
        try {
            mediaPlayer.prepare();
        } catch (Exception e1) {
            e1.printStackTrace();
            mediaPlayer.release();
            return;
        }
        mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {

            @Override
            public void onSeekComplete(MediaPlayer mediaPlayer) {
                // TODO Auto-generated method stub
                mediaPlayer.stop();
                mediaPlayer.start();
            }
        });
        mediaPlayer.setVolume(volume, volume);
        mediaPlayer.start();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android mediaplayer - 播放一次铃声 的相关文章

  • 无法获取项目的未知属性“assembleRelease”

    将 Android Studio 更新到版本 2 2 并将 gradle 插件更新到 2 2 0 后 出现以下错误 错误 32 1 评估项目 jobdispatcher 时出现问题 无法获取 org gradle api Project 类
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • 如何通过代码检测Android上的表情符号支持

    通过代码 我可以制作一个按钮 将这 3 个表情符号插入到文本中 不过 在许多手机上 当用户单击按钮时 问题是 显示为 X X X 或者更糟糕的是 它只显示三个空白空间 我想在无法正确显示表情符号的 Android 设备上禁用并隐藏我自己的内
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • AIRPLANE_MODE 的广播接收器无法与 SDK 26 一起使用

    通常 我使用简单的代码来放置Toast当用户改变AIRPLANE MODE 并且它可以使用targetSdkVersion 25 我的 AirPlaneModeReceiver public class AirPlaneModeReceiv
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • 如何使用retrofit2动态设置超时?

    public class Router private static Retrofit retrofit null public Retrofit getRetrofit if retrofit null OkHttpClient clie
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • Android 中图像字节表示的每像素字节数

    我目前正在编写一个Android应用程序 需要在其中使用OCR 为了实现这一点 我将 Tesseract 与tesseract android tools 项目 http code google com p tesseract androi
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 片段活动中的 commitAllowingStateLoss()

    我的应用程序使用片段活动 它仅处于纵向模式 无法旋转屏幕 最初我使用的是commit 方法 但现在我计划不加区别地将这些更改为commitAllowingStateLoss 对于碎片活动 是否有任何理由不不加区别地执行此操作而不重新评估我使
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • 活动中列表视图中的粘滞行

    我的列表视图中只有一行应该是粘性的 而不是粘性标题中带有字母的部分或部分 我真的很感激任何关于列表视图在活动中粘性一行而不是片段的帮助 我该怎么做 我真的很感谢任何帮助 提前致谢 使用如下代码 class MyAsyncTask exten
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 如何以编程方式检测android中可用的底部软导航栏?

    我试图通过 android 程序确定软导航栏 我没有找到直接的方法来确定 有没有办法找到导航栏的可用性 软导航栏图像在这里 以下方法对我有用并在许多设备上进行了测试 public boolean hasNavBar Resources re
  • Android:我的应用程序太大并给出“无法执行 dex:方法 ID 不在 [0, 0xffff]: 65536”?

    我正在尝试将我的应用程序与 Box Dropbox 和 Google Drive 集成 所有这 3 项服务都需要许多第 3 方 jar 此外 我的应用程序已经需要一些第三方 jar 现在 当我尝试从 Eclipse 运行我的应用程序时 出现
  • 将主题应用到 v7 支持操作栏

    我正在使用support v7库来实现ActionBar在我的应用程序中 我的styles xml file
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie

随机推荐

  • c++ 11 mersenne_twister_engine 类的问题

    我一直在尝试使用 c 11 mersenne twister engine 类 http www cplusplus com reference random mersenne twister engine 生成区间 0 1 中的数字 但是
  • create-react-app 自版本 4.0.1 起不再工作

    我尝试安装create react app using npm i create react app npx create react app new app and npm init react app new app 但我不断收到此错误
  • 如何使用甲骨文钱包

    我正在尝试将密码存储在 Oracle Wallet 文件中 我将从代码中检索并使用该文件 我尝试创建一个钱包并在那里保存凭证 mkstore wrl
  • “OPEN_URI”的菜单项不存在于菜单项返回中

    我有一张卡片正在通过镜像 API 插入到我的时间线中 该卡有 3 个选项 扫描 回复 删除 预期 gt 条码测试 扫描 回复 删除 已收到 gt 条码测试 回复 删除 回复和删除选项仅在菜单项上返回 如果我将 OPEN URI 更改为 CU
  • 替换列中匹配的值

    我是 R 编程新手 我一直停留在下面的示例上 基本上我有两个数据集 数据集1 ID Category 1 CatZZ 2 CatVV 3 CatAA 4 CatQQ 数据集2 ID Category 1 Cat600 3 Cat611 我试
  • Unity中如何减少VR游戏的延迟

    我一直在使用 Unity3d 构建 VR 游戏 它只有低多边形模型 文件大小小于 40 mb 但在移动设备上玩游戏时仍然滞后 请建议如何提高性能 先感谢您 为了提高移动 VR 的性能 您必须尽可能优化一切 您应该牢记以下一些变量 图形方面
  • Django 自引用外键

    一般来说 我对网络应用程序和数据库的东西比较陌生 所以这可能是一个愚蠢的问题 我想创建一个模型 CategoryModel 其中的字段指向模型的另一个实例 其父级 的主 ID class CategoryModel models Model
  • 用下划线替换文件名中的括号和空格

    我用这一行删除文件夹名称上的空格 find tmp depth name execdir rename s g 有没有办法从文件名中删除空格和括号并添加下划线 例如 我有 a dir 1 file with spaces and paren
  • XSLT:从 xsd 获取枚举

    我在 xsd 文件中有这个枚举
  • 什么是 Unix 时间戳以及为什么使用它?

    什么是 Unix 时间戳 在 PHP 中 当处理日期时 该函数strtotime 输出一些整数值 那是什么 我试图了解这一点 但我无法得到满意的答案 特别是为什么我们需要使用转换日期strtotime 什么是 Unix 时间戳 简而言之 U
  • 使用 CSOM 对 Sharepoint Online 进行身份验证

    我觉得我在这里错过了一些东西 我尝试通过 C 控制台应用程序登录 SPO 租户 但收到错误 无法联系网站 https xxx sharepoint com 或者网站不支持 SharePoint Online 凭据 响应状态代码为 未经授权
  • 未声明的标识符 - 不确定为什么

    我刚学C 我写了以下内容 void main void unsigned int curr dat 0 The current dat file to use unsigned char ch 0 Key entered at keyboa
  • 在 CMake 中列出 include_directories

    我有一个 cmake 构建 其中我正在搜索一堆依赖项 即我有很多实例 FIND PACKAGE SomePackage if SOMEPACKAGE FOUND include directories SOMEPACKAGE INCLUDE
  • 在 PostgreSQL 中使用 1 个查询选择特定行的最佳方法?

    我有一个 Java 应用程序 要求我在给定特定条件的情况下查找特定记录 例如 我有一张桌子 id song artist record label 1 Never Gonna Give You Up Rick Astley Rickroll
  • highcharts:在可见时而不是在页面加载时触发动画

    我有一个页面分为几个部分 可以通过锚点访问 有没有办法让 highcharts 动画在其特定部分变得可见而不是在页面加载时触发 http jsfiddle net YFMSb 2 图表位于 技能 下 因此希望在调出页面的该部分时出现初始动画
  • 如何使 bootstrap-multiselect 不可见我的默认值?

    我正在使用引导多选插件使处理下拉菜单更容易 但是 我在尝试默认隐藏菜单时遇到了问题 基本上 我有一个复选框 当选中此复选框时 我会显示下拉菜单 当取消选中它时 菜单应该隐藏 默认情况下该复选框未选中 因此我希望默认情况下也隐藏菜单 我尝试使
  • 如何确定Azure中应用程序服务计划CPU百分比90%的原因?

    我试图了解最大 CPU 百分比 内存利用率的原因应用服务计划但无法在天蓝色门户中找到任何简单的方法 在我的应用程序服务计划中 创建了 20 个应用程序服务 在 20 个应用程序服务中 我仅将 2 3 个应用程序服务用于用户界面 其他应用程序
  • 如何在 R 中执行 SQL 脚本时使用动态值

    我的 R 工作流程现在涉及处理大量查询 RPostgreSQL图书馆 我真的想让代码将来变得易于维护和管理 我开始从不同的地方加载大型查询 SQL files this有帮助 并且效果很好 然后我开始使用插值 that有帮助 这意味着我可以
  • 如何在 Apache 中使用 pcntl_fork() ?

    这是我的代码 里面index php 只是一个例子 pid pcntl fork if pid 1 die failed to fork else if pid nothing to do else putDataIntoWebServic
  • android mediaplayer - 播放一次铃声

    我尝试使用 MediaPlayer 类播放一次设备铃声 我必须使用 MediaPlayer 因为我将铃声与应用程序中的其他音频源一起使用 所以我尝试以下方法来播放随机铃声 但我无法阻止它循环 它继续播放 是否可以使用 MediaPlayer