- 博客(35)
- 资源 (14)
- 收藏
- 关注
原创 Android YUV数据格式总结
Android中使用MediaCodec做编码时,如果使用MediaCodec的buffer->buffer模式,现阶段一般而言都需要做颜色空间转换,一般Android的Camera支持NV21与YV12格式,而遍历Android上编码器支持格式时,一般都表示如: COLOR_FormatYUV420SemiPlanar COLOR_FormatYUV420PackedPlanar 等格式.所以我们需要了解一下MediaCodec表示的格式与Camera表示的格式有什么不同YUV数据格式COLO
2021-11-29 20:52:28 618
原创 Android 4.4 如何修改Dalvik虚拟机内存分配
功能:通过修改Dalvik虚拟机内存分配并且来降低系统GC回收导致CPU使用率高的问题,这样修改可以降低CPU使用率5%虚拟机的几个重要参数说明:dalvik.vm.heapstartsize堆分配的初始大小,调整这个值会影响到应用的流畅性和整体ram消耗。这个值越小,系统ram消耗越慢,但是由于初始值较小,一些较大的应用需要扩张这个堆,从而引发gc和堆调整的策略,会应用反应更慢。相反,这个值越大系统ram消耗越快,但是程序更流畅。dalvik.vm.heapgrowthlimit极限堆大小,dv
2021-11-29 20:42:53 1792
原创 Android.mk 预编译可执行程序
创建一个main.c文件,在里面打印一些日志#include <stdio.h>#include <string.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h> void *my_test_th
2021-11-19 16:34:34 1689
原创 Linux 应用 fork()函数的使用
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己示例代码:#include <stdio.h>#include <sys/types.h>#
2021-11-19 16:14:39 1067
原创 Android 自定义View 监听WIFI热点状态变化
功能:实现一个监听热点打开和关闭状态显示创建一个WifiApView .java类继承LinearLayout ,该类中主要监听wifi热点状态变化,并且控制热点修改热点图标的显示public class WifiApView extends LinearLayout { private static final String TAG = WifiApView.class.getSimpleName(); public static final boolean DEBUG = fals
2021-11-19 15:23:21 1846
原创 Camera YUV数据如何保存到本地
Camera YUV数据如何保存到本地public void writeYuvToFile(String path, byte[] data) { FileOutputStream out = null; try { File file = new File(path); File parent = file.getParentFile(); if (parent != null && !parent.exists()) p
2021-11-17 16:46:57 486
原创 Camera YUV数据转换Jpeg和Bitmap图片格式并保存到本地
Camera YUV数据转换Jpeg图片格式并保存到本地private void saveYuv2Jpeg(String path, byte[] data) { YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, mWidth, mHeight, null); ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length); boolean resu
2021-11-17 16:37:18 886
原创 Android.mk 编译Android Studio工程源码
Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java)LOCAL_PACKAGE_NAME := TestLOCAL_SDK_VERSION := current#LOCAL_PROGUARD_FLAG_FILES := prog
2021-11-17 15:50:22 1311
原创 Linux 应用 getpid()和getppid()的使用
一、接口介绍getpid():获取当前进程号getppid():获取父进程号代码示例#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ pid_t p1 = -1, p2 = -1; printf("hello.\n"); p1 = getpid(); printf("pid = %d.\n", p1); p2 = getppid(); p
2021-11-17 15:48:10 1036
原创 Linux 应用 environ环境变量操作函数
功能:打印Lunux下面环境变量#include <stdio.h>int main(void){ extern char **environ; // 声明就能用 int i = 0; while (NULL != environ[i]) { printf("%s\n", environ[i]); i++; } return 0;}日志打印wang@R720:~/LinuxStudy/process$ ./testLC_PAPER=zh_CN.UTF-8
2021-11-17 15:04:49 479
原创 Linux 应用 硬连接和软连接的区别
硬连接硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放
2021-11-17 15:01:08 289
原创 Android 4.4 PhoneWindowManager如何给自定义按键添加长按功能
代码路径:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java在PhoneWindowManager.java文件中添加长按和抬起功能volatile boolean mRecordOkKeyHandled; private void interceptRecordOkLongKeyDown(boolean handled){ mRecordOkKeyHandled = hand
2021-11-16 17:09:55 1168
原创 Android.mk编译java动态库
一, java动态库程序代码在Anroid层根目录新建study/java_lib/lib目录, 并创建文件名:com/wq/mytestjar/Test.javapackage com.wq.mytestjar;public class Test{ private int a; private int b; private int c; public Test(int a, int b, int c) { this.a = a; this.b = b; this.c =
2021-11-15 16:54:19 1541
原创 Android 11 如何通过局域网ADB调试
问题:在调试的时候通常都会用到局域网adb功能1、system/core/rootdir/init.rcdiff --git a/rootdir/init.rc b/rootdir/init.rcindex a9af0b0..10c4bd0 100644--- a/rootdir/init.rc+++ b/rootdir/init.rc@@ -930,7 +930,12 @@ on boot # Define default initial receive window size in
2021-11-15 13:45:29 1753
原创 Android 4.4 如何添加局域网ADB调试流程
需求:在我们开发过程中,如果通过usb线不能调试,那么只能通过局域网adb来调试。代码路径:system/core/adb/adb.csystem/core/adb/services.cexternal/sepolicy/property_contextssystem/core/init/property_service.cframeworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.jav
2021-11-15 13:43:08 1487
原创 Android11 如何修改默认时区
代码路径:build/make/core/main.mkdiff --git a/core/main.mk b/core/main.mkold mode 100644new mode 100755index 85b5841..5bcb396--- a/core/main.mk+++ b/core/main.mk@@ -372,7 +372,8 @@ endif BUILD_WITHOUT_PV := true ADDITIONAL_BUILD_PROPERTIES += net.bt
2021-11-14 17:48:50 1535
原创 Android11 网络无法更新时间
代码路径:frameworks/base/core/res/res/values/config.xml--- a/core/res/res/values/config.xml+++ b/core/res/res/values/config.xml@@ -2037,7 +2037,7 @@ <bool name="config_actionMenuItemAllCaps">true</bool> <!-- Remote server that ca
2021-11-14 17:47:13 1043
原创 Android 10 如何默认给应用授权获取IMEI
代码路径:frameworks/base/telephony/java/com/android/internal/telephony/TelephonyPermissions.java在TelephonyPermissions.java文件中checkReadDeviceIdentifiers()方法中默认给应用授权 @VisibleForTesting public static boolean checkReadDeviceIdentifiers(Context context,
2021-11-13 17:43:02 1732
原创 Android 4.4 如何添加按键流程
代码路径:frameworks/base/data/keyboards/Generic.klframeworks/base/data/keyboards/qwerty.kl/device/sprd/sharkle/common/rootdir/system/usr/keylayout/gpio-keys.klframeworks/native/include/input/KeycodeLabels.hframeworks/native/include/android/keycodes.hfram
2021-11-13 15:20:29 897
原创 Android11 如何将系统默认设置中文
代码路径:build/make/target/product/full_base.mkbuild/make/target/product/languages_default.mk在full_base.mk文件中修改默认中文diff --git a/target/product/full_base.mk b/target/product/full_base.mkold mode 100644new mode 100755index ffd3cde..e1453c2--- a/target/pr
2021-11-13 14:13:19 1713 1
原创 Android11 不休眠 删除锁屏
代码路径:device/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xmlframeworks/base/packages/SettingsProvider/res/values/defaults.xml1、在device/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/
2021-11-13 14:09:24 740
原创 Binder的使用以及核心机制分析,跨进程的实现原理
Binder可以提供系统中任何程序都可以访问的全局服务。这个功能当然是任何系统都应该提供的Android Binder框架分为服务器接口、Binder驱动、以及客户端接口;简单想一下,需要提供一个全局服务,那么全局服务那端即是服务器接口,任何程序即客户端接口,它们之间通过一个Binder驱动访问。Binder框架原理分析1、ISettingToServer.aidl文件生成的Java文件public interface ISettingToServer extends android.os.IInt
2021-11-13 09:13:53 564
原创 Android 10 解决在系统应用服务中不能拉起另外一个应用服务问题
需求:由于安卓10系统添加省电管理,在服务里面不能启动另外一个应用的服务,如果想要启动另一个应用的服务,就必须要把该应用添加到省电管理的白单代码路径:vendor/sprd/modules/power/fw-power-config/appPowerSaveConfig.xml在appPowerSaveConfig.xml文件中把需要启动应用服务添加到白名单中<?xml version='1.0' encoding='utf-8' standalone='yes' ?><app_
2021-11-12 13:45:04 935
原创 Android.mk 文件中如何编写打包so库到应用目录中
如何将第三方应用打包到system/app进行so库自我拷贝到应用对应目录下1、创建该应用文件夹,然后在里面创建一个lib文件夹,将so库放到里面2、编写Android.mk文件LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := 模块名LOCAL_MODULE_TAGS := optionalLOCAL_CERTIFICATE := PRESIGNED#LOCAL_MODULE_PATH := $(TARGET_
2021-11-12 11:45:09 1719
原创 Android 8.1 如何查看系统支持哪些音视频编解码格式
代码路径:frameworks/av/media/libstagefright/omx/SoftOMXPlugin.cpp在SoftOMXPlugin.cpp文件中kComponents[]结构体中可以查看音视频编解码支持格式static const struct { const char *mName; const char *mLibNameSuffix; const char *mRole;} kComponents[] = { { "OMX.google.a
2021-11-11 15:17:31 3986
原创 Android 4.4 如何修改背光最小亮度和最大亮度
代码路径:frameworks/base/core/res/res/values/config.xml在config.xml文件中修改这两个属性就可以修改最小亮度和最大亮度 <integer name="config_screenBrightnessSettingMinimum">10</integer> <!-- Maximum screen brightness allowed by the power manager. The user
2021-11-09 17:54:30 960
原创 Android 4.4 如何屏蔽壁纸功能
代码路径:frameworks/base/core/res/res/values/config.xml在config.xml文件中config_enableWallpaperService该变量字段是否加载壁纸服务的条件<bool name="config_enableWallpaperService">false</bool>备注:该变量为true,则加载壁纸服务。该变量为false,则不加载该壁纸服务...
2021-11-09 17:48:46 1209
原创 Android 4.4 如何设置物理键盘不可用
代码路径:frameworks/base/services/java/com/android/server/wm/WindowManagerService.java在/WindowManagerService.java文件中computeScreenConfigurationLocked方法中hardKeyboardAvailable设置false表示物理键盘不可用boolean hardKeyboardAvailable = false;//config.keyboard != Configurat
2021-11-09 17:47:37 693
原创 Android WindowManager.LayoutParams.type属性总结
type 的取值:应用程序窗口。 public static final int FIRST_APPLICATION_WINDOW = 1; 所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。 public static final int TYPE_BASE_APPLICATION =1; 普通应用功能程序窗口。token必须设置为Activity的token,以指出该窗口属谁。 public static final int TYPE_APPLI
2021-11-05 16:10:37 2501
原创 Android 4.4 如何在ShutdownThread类中添加Native方法
代码路径:frameworks/base/services/java/com/android/server/power/ShutdownThread.javaframeworks/base/services/jni/onload.cppframeworks/base/services/jni/com_android_server_power_ShutdownThread.cpp在ShutdownThread.java文件中定义一个Native方法public static native void
2021-11-05 13:52:07 146
原创 Android 4.4 系统关机流程
代码路径:frameworks/base/services/java/com/android/server/power/PowerManagerService.javaframeworks/base/services/java/com/android/server/power/ShutdownThread.java日志关键TAG:ShutdownThread、PowerManagerService在应用层调用shutdown()方法进行关机private void shutdown() {
2021-11-05 11:01:26 302
原创 Android 4.4 SystemUI 状态栏和导航栏加载流程
代码路径:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.javaframeworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.javaframeworks/base/packages/SystemUI/src/com/android/syste
2021-11-04 20:00:52 428
原创 如何top命令查看进程信息和cpu占用率分析
top通过top命令查看进程信息通过adb shell top -h查看其使用方法130|root@sp9820e_1h10:/ # top -hUsage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ] -m num Maximum number of processes to display. -n num Updates to show before
2021-11-04 19:57:39 7253
原创 Android 4.4 如何修改热点密码
如何修改热点密码private WifiManager mWifiManager;mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);WifiConfiguration mWifiConfig = mWifiManager.getWifiApConfiguration();mWifiConfig.preSharedKey = value;//该value就是设置密码if (mWifiManager.get
2021-11-02 11:30:42 266
原创 Android 4.4 如何在PhoneWindowManager中裁剪应用区域距离顶部的高度
代码路径:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java在PhoneWindowManager.java文件中getNonDecorDisplayHeight()方法中获取应用区域的高度,应用区域分两种情况:1、当导航栏显示的时候,应用区域会减去导航栏的高度。2、当状态栏显示的时候,应用区域的距离会减去状态栏的高度public int getNonDecorDisplayHeight
2021-11-01 17:31:56 288
livepush.rar
2021-08-31
NDK ffmpeg fdk-aac x264开发包以及脚本
2021-08-27
ShareSDK分享封装好工具
2016-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人