从 dumpsys 信息中可以查看 MediaCodec 的创建情况. dumpsys media.resource_manager $ dumpsys media.resource_manager ResourceManagerService: 0xefc81510 Policies: SupportsMultipleSecureCodecs: 1 SupportsSecureWithNonSecureCodec: 1 Processes: Pid: 1564 Client: Id: -54763766629 ...
ResourceManagerService (4.3) markClientForPendingRemoval reclaimResourcesFromClientsPendingRemoval
ResourceManagerService (4.3) markClientForPendingRemoval 和 reclaimResourcesFromClientsPendingRemoval markClientForPendingRemoval 标记客户端可被移除 在下一个 reclaimResourcesFromClientsPendingRemoval 被调用时,被释放。 接口: // frameworks/av/media/libmedia/aidl/android/media/IResourceManagerService.aidl /** * Mark a client for pending removal * * @param pid pid from which the client's resources will be removed. * @param clientId cl ...
ResourceManagerService(4.1) addResource
应用向 ResourceManagerService 注册资源的接口 接口 ResourceManagerService 中对 addResource 信息的保存封装类 addResource 流程 接口: // frameworks/av/media/libmedia/aidl/android/media/IResourceManagerService.aidl /** * Add a client to a process with a list of resources. * * @param pid pid of the client. * @param uid uid of the client. * @param clientId an identifier that uniquely identifies the client within the pid. * @p ...
ResourceManagerService (2)MediaResourceParcel – MediaResource 的描述信息
aidl 接口 // frameworks/av/media/libmedia/aidl/android/media/MediaResourceParcel.aidl parcelable MediaResourceParcel { // TODO: default enum value is not supported yet. // Set default enum value when b/142739329 is fixed. /** * Type of the media resource. */ MediaResourceType type;// = MediaResourceTypeEnum::kUnspecified; /** * Sub-type of the media resource. */ MediaResourceSubType subType;// = Media ...
ResourceManagerService(1) 启动时机与提供的接口
作用 管理资源(Resource), 应用添加和移除资源时通知到 Service. 资源紧张时, 将根据优先级释放资源. 释放资源通过 IResourceManagerClient.reclaimResource 通知应用进行释放 启动时机 在 mediaserver 初始化时启动,并且被添加到 Service Manager 中 1.0 在 meida server 的 main 函数中实例化对象 // frameworks/av/media/mediaserver/main_mediaserver.cpp int main(int argc __unused, char **argv __unused) { ... ResourceManagerService::instantiate();// 见 2.0 ... } ...
android9.0 切换语言
添加权限 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 12 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 主要 API 获取系 ...
触摸事件 ACTION_UP/ACTION_MOVE 的分发
MotionEvent 的 ACTIONDOWN 是按照传递流程执行的, 但是 ACTIONUP/ACTION_MOVE 的传递过程会 受到事件是否被消费的影响 (被消费指的是方法返回 true ) 基础知识 触摸事件的分发主要涉及以下三个方法 boolean dispatchTouchEvent(MotionEvent event) boolean onTouchEvent(MotionEvent event) boolean onInterceptTouchEvent(MotionEvent event) // ViewGroup 独有 MotionEvent 有三种动作 (actoin) ACTION_DOWN 按下 ACTION_UP 抬起 ACTION_MOVE 移动 总的来说触摸事件的 传递流程 是: dispatchTouchEvent() -> onIntercept ...
使用 HanziToPinyin 转拼音
看源码时发现, 在联系人存储的代码下, 有一个汉字转拼音的工具类 HanziToPinyin; 使用了全球化支持库 icu4j 导入依赖文件: implementation 'com.ibm.icu:icu4j:60.2' 1 implementation 'com.ibm.icu:icu4j:60.2' 使用方法: hanziToPinyin = HanziToPinyin.getInstance(); String pinyin = hanziToPinyin.transliterate("汉语拼音"); ...
JNI 回调报错
java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: can't call void com.jnidemo.NativeInterface.onConnectionStateChanged(int, int) on instance of java.lang.Class jni 中无法回调某个 java 方法; 因为使用了错误的 jobject 对象来回调 java 中的方法; // java public native static void initNative(); public void stateCallback(){ } // C 中 static JNIEnv *sCallbackEnv = NULL; static jobject mCallbacksObj = NULL; // 第二个参数应是 jclass, 虽不报错但使用 ...
activity-alias 和 meta-data 标签
activity-alias 标签 activity 别名, 使用 android:targetActivity 指定真正指向的 activity, 调用这个 activity 会打开 targetActivity; <activity-alias android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:targetActivity="strin ...