1.修改手机插入电脑显示内存,文件路径frameworks/av/media/mtp/MtpStorage.cpp
uint64_t MtpStorage::getMaxCapacity() {
if (mMaxCapacity == 0) {
struct statfs stat;
if (statfs(getPath(), &stat))
return -1;
//HXY032 PC show 8G begin
uint64_t cap = (uint64_t)stat.f_blocks;
if (cap > 1024*1024 && cap < 8*1024*1024/4){
cap = 8*1024*1024/4;
}
//HXY032 PC show 8G end
mMaxCapacity = cap * (uint64_t)stat.f_bsize;
}
return mMaxCapacity;
}
2.默认打开流量节省程序,文件路径alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
<bool name="def_restrict_background_data">true</bool>
3.Android MTK 修改蓝牙地址随机生成
下载软件后,每台机器的蓝牙地址是一样的,导致自己的机器均无法配对,蓝牙地址需要改成随机生成各(文件路径可能不一样)
mediatek\external\bluetooth\driver\combo\radiomod.c
mediatek\external\bluetooth\driver\standalone\radiomod.c
static BtStatus GORMcmd_HCC_Set_Local_BD_Addr(void)
{
......
#if def DEV_VERSION
GetRandomValue(btinit->bt_nvram.fields.addr);
#endif
//修改这个定义的宏变量 当前文件中所有用到的地方
#if1//def DEV_VERSION
GetRandomValue(btinit->bt_nvram.fields.addr);
#endif
}
3.打开视频从列表过滤掉google浏览器
frameworks/base/core/java/com/android/internal/app/ResolverListController.java
if (!found) {//remove chrome
if(!newInfo.activityInfo.packageName.equals("com.android.chrome")) {
final ComponentName name = new ComponentName(
newInfo.activityInfo.packageName, newInfo.activityInfo.name);
final ResolverActivity.ResolvedComponentInfo rci =
new ResolverActivity.ResolvedComponentInfo(name, intent, newInfo);
rci.setPinned(isComponentPinned(name));
into.add(rci);
}
}
4.修改2个图库gms不过的
frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
// Gallery2
+ /*
PackageParser.Package galleryPackages = getPackage("com.android.gallery3d");
if (galleryPackages != null
&& doesPackageSupportRuntimePermissions(galleryPackages)) {
grantRuntimePermissions(galleryPackages, STORAGE_PERMISSIONS, userId);
- }
+ }*/
5.替换成谷歌音乐后,智能唤醒中关于系统音乐的功能都要去掉
(1)vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/xunhu_defaults.xml
<string name="default_m_gesture_action">"6;"</string>
改成
<string name="default_m_gesture_action">"3;Play Music;com.google.android.music;com.android.music.activitymanagement.TopLevelActivity"</string>
(2)teksun/packages/apps/SmartWakeUp/res/values/arrays.xml
<string-array name="function_items">
<item>@string/dial_number_function</item>
<item>@string/open_sms_application_function</item>
<item>@string/open_application_function</item>
<item>@string/unlock_screen_function</item>
<item>@string/bright_screen_function</item>
<item>@string/control_music_function</item>
<item>@string/play_last_song_function</item>
<item>@string/play_next_song_function</item>
</string-array>
改成
<string-array name="function_items">
<item>@string/dial_number_function</item>
<item>@string/open_sms_application_function</item>
<item>@string/open_application_function</item>
<item>@string/unlock_screen_function</item>
<item>@string/bright_screen_function</item>
</string-array>
(3)teksun/packages/apps/SmartWakeUp/res/values/configs.xml
<bool name="left_gesture_visible">true</bool>
<bool name="right_gesture_visible">true</bool>
<bool name="left_gesture_enabled_select_function">true</bool>
<bool name="right_gesture_enabled_select_function">true</bool>
改成
<bool name="left_gesture_visible">false</bool>
<bool name="right_gesture_visible">false</bool>
<bool name="left_gesture_enabled_select_function">false</bool>
<bool name="right_gesture_enabled_select_function">false</bool>
6.修改相册详情中的型号与制造商
vendor/mediatek/proprietary/packages/apps/Gallery2/src/com/android/gallery3d/data/MediaDetails.java如下新增内容
if (key == MediaDetails.INDEX_FLASH) {
MediaDetails.FlashState state = new MediaDetails.FlashState(
Integer.valueOf(value.toString()));
details.addDetail(key, state);
} else {
//add start
if(key == MediaDetails.INDEX_MAKE) {
value = "制造商名称";
} else if(key == MediaDetails.INDEX_MODEL) {
value = "型号名称";
}
//add end
details.addDetail(key, value);
}
7、内置可删除应用
方法一(不通用,自己公司的)
teksun/prebuilt/build/prebuilt_app.mk改TEKSUN_OPERATOR_APP+="app名称"
teksun/prebuilt/apps/app名称/app名称.apk
该方法内置能在alps/out/target/product/项目名/obj/APPS下生成“app名称_intermediates”文件
方法二(拷贝方法)
teksun/packages/apps/innerapk/app名称/app名称.apk
teksun/packages/apps/innerapk/Android.mk(内容如下)
#include $(all-subdir-makefiles)
LOCAL_PATH := $(call my-dir)
LOCAL_POST_PROCESS_COMMAND := $(shell mkdir -p $(ANDROID_PRODUCT_OUT)/vendor/operator/app/app名称/)
LOCAL_POST_PROCESS_COMMAND := $(shell cp -r $(LOCAL_PATH)/app名称/app名称.apk $(ANDROID_PRODUCT_OUT)/vendor/operator/app/app名称/)
注:如出现打开应用后闪退,可换另一方法试试
方法三(自己写Mk方式) apk文件和mk文件都放同一个位置,下面是Android.mk写法
teksun/packages/apps/TIMMUSIC/Android.mk
+#This file is created automatically, please do not modify!!!
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+#设置app名称
+LOCAL_MODULE := TIMMUSIC
+#设置app路径
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+#该模块在所有版本都编译 user eng userdebug
+LOCAL_MODULE_TAGS := optional
+#指定文件类型,apk文件用APPS, 并且 会检查 是否是apk文件,动态库so文件用SHARED_LIBRARIES ,bin文件用EXECUTABLES,其他文件 用ETC
+LOCAL_MODULE_CLASS := APPS
+#
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+#签名方式,如果是platform,代表签名成系统软件, 如果还是PRESIGNED,表示用的是apk原本的签名。
+LOCAL_CERTIFICATE := PRESIGNED
+#将apk编进“/system/priv-app/目录”,如果为false,或者不加这句话,就会编进“/system/app” 目录, 二者区别在于前者的权限要高于后者
+#LOCAL_PRIVILEGED_MODULE := false
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/vendor/operator/app
+include $(BUILD_PREBUILT)
8、新增壁纸
增加一张壁纸为例
vendor/mediatek/proprietary/packages/apps/WallpaperPicker/res/drawable-nodpi/wallpaper_02.png
vendor/mediatek/proprietary/packages/apps/WallpaperPicker/res/drawable-nodpi/wallpaper_02_small.jpg(分辨率213x189)
vendor/mediatek/proprietary/packages/apps/WallpaperPicker/res/values-nodpi/wallpapers.xml改成如下
<string-array name="wallpapers" translatable="false">
<item>wallpaper_02</item>
</string-array>
9.默认壁纸
6739平台:替换device/mediatek/common/overlay/ago/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg或frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg
6580平台:替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png 或替换device/mediatek/common/overlay/ago/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg
10.修改system--multiple users--add user,添加完然后删除用户,手机会一直卡在一个界面
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
CollapsedStatusBarFragment statusBarFragment =
(CollapsedStatusBarFragment) fragment;
statusBarFragment.initNotificationIconArea(mNotificationIconAreaController);
+ ///hxy:add by hefengjie at 20190517{{&&
+ ///Description:system--multiple users--add user,添加完然后删除用户,手机会一直卡在一个界面
+ PhoneStatusBarView oldStatusBarView = mStatusBarView; //MTK add
+ ///&&}}
mStatusBarView = (PhoneStatusBarView) fragment.getView();
mStatusBarView.setBar(this);
mStatusBarView.setPanel(mNotificationPanel);
mStatusBarView.setScrimController(mScrimController);
mStatusBarView.setBouncerShowing(mBouncerShowing);
+ ///hxy:add by hefengjie at 20190517{{&&
+ ///Description:system--multiple users--add user,添加完然后删除用户,手机会一直卡在一个界面
+ if (oldStatusBarView != null) {
+ float fraction = oldStatusBarView.getExpansionFraction();
+ boolean expanded = oldStatusBarView.isExpanded();
+ mStatusBarView.panelExpansionChanged(fraction, expanded);
+ }
+ ///&&}}
if (mHeadsUpAppearanceController != null) {
// This view is being recreated, let's destroy the old one
mHeadsUpAppearanceController.destroy();
11.需要人脸解锁后直接进入待机界面
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
for (int i = size - 1; i >= 0; i--) {
try {
mKeyguardStateCallbacks.get(i).onTrustedChanged(trusted);
+ ///人脸解锁后直接进入待机界面 add by xxf 2019-05-08{{&&
+ if (trusted) {
+ handleKeyguardDone();
+ }
+ ///&&}}
} catch (RemoteException e) {
Slog.w(TAG, "Failed to call notifyTrustedChangedLocked", e);
if (e instanceof DeadObjectException) {
12. selinux权限报错 avc
device/mediatek/sepolicy/basic/non_plat/system_app.te
allow system_app aee_exp_data_file:file r_file_perms;
allow system_app aee_exp_data_file:dir r_dir_perms;
allow system_app md_monitor:unix_stream_socket connectto;
+
+allow system_app sys_auxiliarycamera_parameter_file:file read;
+allow system_app sys_auxiliarycamera_parameter_file:file open;
+allow system_app sys_auxiliarycamera_brightness_file:file read;
+allow system_app sys_auxiliarycamera_brightness_file:file open;
13. P版本设置-关于手机里面 修改菜单位置
vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/my_device_info.xml,改order
<!-- Description: 设置-关于手机添加运行内存和手机存储显示 -->
<Preference
android:key="phone_ram_info"
- android:order="52"
+ android:order="42"
style="?android:preferenceInformationStyle"
android:title="@string/phone_ram_info_title"
android:summary="@string/phone_ram_info_summary"/>
<Preference
android:key="phone_rom_info"
- android:order="53"
+ android:order="42"
style="?android:preferenceInformationStyle"
android:title="@string/phone_rom_info_title"
android:summary="@string/phone_rom_info_summary"/>
<!-- &&}} -->
-</PreferenceScreen>
14.指纹解锁失败添加震动提示
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
-
+import android.os.Vibrator;
import java.io.PrintWriter;
/**
@@ -43,7 +43,7 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback {
private static final boolean DEBUG_FP_WAKELOCK = KeyguardConstants.DEBUG_FP_WAKELOCK;
private static final long FINGERPRINT_WAKELOCK_TIMEOUT_MS = 15 * 1000;
private static final String FINGERPRINT_WAKE_LOCK_NAME = "wake-and-unlock wakelock";
-
+ private Vibrator mVibrator;
/**
* Mode in which we don't need to wake up the device when we get a fingerprint.
*/
@@ -129,6 +129,7 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback {
mScrimController = scrimController;
mStatusBar = statusBar;
mUnlockMethodCache = unlockMethodCache;
+ mVibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
}
public void setStatusBarKeyguardViewManager(
@@ -345,6 +346,8 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback {
@Override
public void onFingerprintAuthFailed() {
+ Log.i(TAG, "wdh onFingerprintAuthFailed vibrate");
+ mVibrator.vibrate(300);
cleanup();
}
15.连接wifi或者数据显示上下行
vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml
<bool name="config_enableNotificationShadeDrag">true</bool>
<!-- Whether to show activity indicators in the status bar -->
- <bool name="config_showActivity">false</bool>
+ <bool name="config_showActivity">true</bool>
<!-- Whether or not the button to clear all notifications will be shown. -->
<bool name="config_enableNotificationsClearAll">true</bool>