Android 8.1/9.0 一份能用的录音机源码

源码位置

SoundRecorder

原来的源码存在如下的问题

1、app 图标不可见

2、不支持录音文件列表浏览

3、app 主界面是对话框风格

其他问题

1、没有外置SD卡无法录音。 解决办法:改为存到手机里,改一下

startRecording()中sampleDir路径,这个都会吧。

2、

import android.os.storage.VolumeInfo;
import android.os.storage.DiskInfo;

这两个类访问,不到。要么用反射,要么相关的都注释掉吧,反正上面已经把存储位置改成存在手机里。

这样改完是一个通用的录音程序。

要求效果如下


KNTQII.png

 KNTMdA.png

 KNTKZd.png

8.1 和 9.0 差异
1、mk 文件不同, 9.0 需要增加 LOCAL_PRIVATE_PLATFORM_APIS := true 配置,因为系统编译时多了 check,不然会报错 Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_API。

需要我们在 mk 中添加其中任意一个配置。

LOCAL_PRIVATE_PLATFORM_APIS := true 这个属性使源码编译时能引用 hide 的 api。

LOCAL_SDK_VERSION 标记 SDK 的 version 状态,可选值为 current system_current test_current core_current

添加了 LOCAL_SDK_VERSION 可能会使编译时找不到一些类,导包失败,SoundRecorder 就是这样,所以添加了 LOCAL_PRIVATE_PLATFORM_APIS
 

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_CERTIFICATE := platform

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := SoundRecorder

#LOCAL_SDK_VERSION := current
LOCAL_PRIVATE_PLATFORM_APIS := true

include $(BUILD_PACKAGE)

2、主题设置不一样,源码是一样的,但是在 9.0 上,同样是 @android:style/Theme.Holo,menuItem 的颜色是黑色的,这样就看不清 音质 两个字,下面是一种巧妙的修改方法

packages\apps\SoundRecorder\src\com\android\soundrecorder\SoundRecorder.java
 

 @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
		
		...

		menu.getItem(OPTIONMENU_SELECT_FORMAT).setTitle(Html.fromHtml("<font color='#ffffff'>" +
                    getString(R.string.voice_quality) +"</font>"));

		...
}

通过 html 标签来修改颜色

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值