Android studio 播放音频文件 播放语速

news2024/11/23 15:34:48

一、使用

public class MainActivity extends AppCompatActivity {
    private Hsvolume mHsVolume = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mHsVolume = new Hsvolume(this);
        mHsVolume.playMusic(R.raw.ceshi);//播放
        mHsVolume.setPlaySpeed(2.0F);//语速
    }
}
  • 音频文件放置位置
    在这里插入图片描述

二、Hsvolume 初始化音频类

public class Hsvolume {
    private Context context;
    private AudioManager mAudioManager;
    private MediaPlayer mPlayer;

    public Hsvolume(Context paramContext) {
        this.context = paramContext;
        this.mAudioManager = ((AudioManager) paramContext.getSystemService(Context.AUDIO_SERVICE));
    }
    //播放音频
    public void playMusic(int paramInt) {
        stopMusic();
        this.mPlayer = MediaPlayer.create(this.context, paramInt);
        if (this.mPlayer != null) {
            this.mPlayer.setLooping(false);
            this.mPlayer.start();
        }
    }
    //播放语速
    public boolean setPlaySpeed(float speed) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            try {
                PlaybackParams params = mPlayer.getPlaybackParams();
                params.setSpeed(speed);
                mPlayer.setPlaybackParams(params);
                return true;
            } catch (Exception e) {
                return false;
            }
        }
        return false;
    }
    //获取系统音量
    public void setSystemvolume(float b) {
        if (this.mAudioManager != null) {
            int max=mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            this.mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, (int) (b*max), 0);
            saveVolume((int) (b*max));
        }
    }
    public void saveVolume(int paramInt) {
        Uri localUri = Settings.System.getUriFor(Settings.System.AUTO_TIME);
        Settings.System.putInt(this.context.getContentResolver(), Settings.System.AUTO_TIME, paramInt);
        this.context.getContentResolver().notifyChange(localUri, null);
    }
    //设置触摸音量
    public void setTouchvolume(boolean isChecked) {
        ContentResolver contentResolver;
        if (this.mAudioManager != null) {
            this.mAudioManager.loadSoundEffects();
            contentResolver = this.context.getContentResolver();
            if (!(isChecked))
                Settings.System.putInt(contentResolver, Settings.System.SOUND_EFFECTS_ENABLED, 0);
            else{
                Settings.System.putInt(contentResolver, Settings.System.SOUND_EFFECTS_ENABLED, 1);
            }
            if (!isChecked) {
                this.mAudioManager.unloadSoundEffects();
                return;
            }
        }
    }
    public void stopMusic() {
        if (this.mPlayer != null) {
            this.mPlayer.stop();
            this.mPlayer.release();
            this.mPlayer = null;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/450345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YOLO系列】YOLOv1论文笔记

论文链接:[1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org) YOLO将目标检测看作回归问题,使用单个神经网络直接从完整图像上预测边界框和类别概率。(端到端:输入原始数据,输出的是最…

E5EAA HENF105240R1将用于工业生产过程的测量、控制和管理

​E5EAA HENF105240R1将用于工业生产过程的测量、控制和管理 工业控制计算机是工业自动化控制系统的核心设备 工业控制计算机是工业自动化设备和信息产业基础设备的核心。传统意义上,将用于工业生产过程的测量、控制和管理的计算机统称为工业控制计算机,…

SpringBoot整合WebSocket的两种方式及微服务网关Gateway配置

一、说明 项目中后台微服务需要向前端页面推送消息,因此不可避免的需要用到WebSocket技术。SpringBoot已经为WebSocket的集成提供了很多支持,只是WebSocket消息如何通过微服务网关Spring Cloud Gateway向外暴露接口,实际开发过程中遇到了很多…

【数据结构第四章】- 串的模式匹配算法(BF 算法和 KMP 算法/用 C 语言实现)

目录 一、前言 二、BF 算法 三、KMP 算法 3.2.1 - KMP 算法的原理 3.2.2 - KMP 算法的实现 3.2.3 - KMP 算法的优化 创作不易,可以点点赞,如果能关注一下博主就更好了~ 一、前言 子串的定位运算通常称为串的模式匹配或串匹配。此运算的应用非常广…

美国主机的带宽和网络速度究竟有多快?

在选择一个主机时,其带宽和网络速度是非常重要的考虑因素。而美国主机在带宽和网络速度方面有着明显的优势,成为了众多用户的首选。那么,美国主机的带宽和网络速度究竟有多快呢?本文将通过分析美国主机的网络基础设施和数据中心设施&#xf…

golang入门项目——打卡抽奖系统

功能介绍 用户加入群组之后,会在签到群组所设的签到地点进行签到和签退,并限制同一个设备只能签到一个用户,签到成功之后。会获取一定的限制在该群组使用的积分。该群组可以设置一些抽奖活动,用户可使用该群组内的积分来进行该群…

Python+mysql+php搭建另类免费代理池

文章目录 前言:思路:开干:php连接MySQL取ip和端口:效果图: 最后调用代理池:总结: 前言: 为什么说另类的,因为我完全是按照我自己的想法来的,比较鸡肋,但是能用&#xff…

短视频app开发:如何提高视频播放稳定性

简介 如今,短视频已经成为人们日常生活中不可或缺的一部分,而短视频app的开发也日益成为了人们热议的话题。在短视频app开发的过程中,如何提高视频播放稳定性是一个非常重要的问题。本文将从短视频源码角度出发,分享提高短视频ap…

如何优化语音交友app开发的搜索和匹配算法

语音交友app开发的挑战 在当今社交媒体行业中,语音交友app开发已经成为一个热门的领域。越来越多的人开始使用语音交友app来寻找新的朋友,这也为开发者们带来了许多机会。然而,这个领域也面临着一些挑战。其中一个最大的挑战是如何优化搜索和…

掏空腰包,日子难过,机缘转岗软件测试,这100个日夜的心酸只有自己知道...

我今年27岁,原本从事着土木工程相关的工作,19年开始有了转行的想法... 大学刚毕业那年,我由于学的是土木工程专业,自然而然的从事了和土木工程相关的工作,房贷、车贷,在经济的高压下,当代社会许…

大数据题目测试(一)

目录 一、环境要求 二、提交结果要求 三、数据描述 四、功能要求 1.数据准备 2.使用 Spark,加载 HDFS 文件系统 meituan_waimai_meishi.csv 文件,并分别使用 RDD和 Spark SQL 完成以下分析(不用考虑数据去重)。 (1)配置环境…

Java设计模式-day01

1,设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(Christopher Alexand…

React Native iOS打包详细步骤

一、在自己项目的iOS文件夹下新建一个文件夹取名bundle 二、将打包命令写到项目package.json文件里,终端执行 npm run bundle-ios 先添加如下(注意:这里写的路径"./ios/bundle"就是上面bundle创建的文件夹)&#xff1a…

C51单片机介绍

本文为学习51单片机的学习的基础,先介绍单片机是什么。所使用的单片机有什么资源。每一个功能的作用是什么。本文使用的是STC89C52RC 40I-PDIO40,故以此为基础研究学习。 C51单片机介绍 单片机的概述单片机的组成部分中央处理器程序存储器数据存储器定时…

图神经网络能做什么?

从概念上讲,我们可以将图神经网络的基本学习任务分为 5 个不同的方向: (1)图神 经网络方法; (2)图神经网络的理论理解; (3)图神经网络的可扩展性&#xff1b…

Git的进阶使用(二)

本篇文章旨在分享本人在学习Git时的随笔记🤩 文章目录 概述1、Git 分支1.1 主干分支1.2 其他分支1.2.1 创建分支1.2.2 查看分支1.2.3 切换分支1.2.4 删除分支 2、Git 合并2.1 主干分支2.2 其他分支2.3 合并分支 3、Git 冲突3.1 主干分支3.2 其他分支3.3 切换分支 -B…

Replika:AI智能聊天机器人

【产品介绍】 Replika,这个名字可能有点拗口,但如果你知道这是复制品Replica的同音变体,你即刻能明白这个产品的定位了。官方Luka公司定义它是你的AI朋友,默默学习你,最终成为你的复制品。它不像现在市面上各大厂的AI助…

《ChatGPT开发应用指南》,Datawhale开源了!

Datawhale发布 开源教程:HuggingLLM,Datawhale团队 随着ChatGPT的爆火,我们相信未来会有越来越多的大模型及类似OpenAI提供的服务出现,AI 正在逐渐平民化,将来每个人都可以利用大模型轻松地做出自己的AI产品。 Huggin…

【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 23 日,在 141 年前的今天,1882 年 3 月 23 日,抽象代数之母艾米诺特(Emmy Noether)诞生。她的…

JUC-多线程(12. AQS-周阳)学习笔记

文章目录 1. 可重入锁1.1. 概述1.2. 可重入锁类型1.3. Synchronized 可重入实现机理 2. LockSupport2.1. LockSupport 是什么2.2. 3种线程等待唤醒的方法2.2.1 Object 的等待与唤醒2.2.2. Condition接口中的等待与唤醒2.2.3. 传统的 synchronized 和 Lock 实现等待唤醒通知的约…