源码位置
原来的源码存在如下的问题
1、app 图标不可见
2、不支持录音文件列表浏览
3、app 主界面是对话框风格
要求效果如下
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 标签来修改颜色