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

源码位置

SoundRecorder

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

1、app 图标不可见

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

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

要求效果如下

Android 8.1/9.0 一份能用的录音机源码_第1张图片

Android 8.1/9.0 一份能用的录音机源码_第2张图片

Android 8.1/9.0 一份能用的录音机源码_第3张图片

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("" +
                    getString(R.string.voice_quality) +""));

		...
}

通过 html 标签来修改颜色

你可能感兴趣的:(Android9.0,源码修改)