MTK-展讯修改笔记
1、安装图形化界面:
sudo apt-get install git-core git-gui
2、最高等级各种流类型的默认音量值frameworksasemediajavaandroidmediaAudioManager.java
private static int[] MAX_STREAM_VOLUME = new int[] {
5, // STREAM_VOICE_CALL
7, // STREAM_SYSTEM
7, // STREAM_RING
15, // STREAM_MUSIC
7, // STREAM_ALARM
7, // STREAM_NOTIFICATION
15, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
15, // STREAM_DTMF
15 // STREAM_TTS
};
3、 windows 加密解密软件,卸载密码 12345678
ubuntu 加密解密软件,卸载命令 sudo dpkg -r ultrasec
ps:需要重启服务器和电脑
4、重启命令:
sudo reboot
sudo shutdown -r now 立刻重启
sudo shutdown -r 10 过10分钟自动重启
sudo shutdown -r 20:35 在时间为20:35时候重启
关机命令:
sudo halt 立刻关机
sudo poweroff 立刻关机
sudo shutdown -h now 立刻关机
sudo shutdown -h 10 10分钟后自动关机
5、解锁风格选择文件:
alpsframeworksasepackagesKeyguardsrccomandroidkeyguardKeyguardHostView.java
6、setting>语言设置>语言名称
和lca、kk版本有关
7、KK版本不打包odex
alpsuildcoremain.mk文件中
1、ifeq ($(HOST_OS),linux)
WITH_DEXPREOPT := false
endif
2、ifeq (user, $(TARGET_BUILD_VARIANT))
WITH_DEXPREOPT := false
endif
8、android.util.Log.d(“robin”,”flashmode11= “+flashmode);
9、activity=“com.google.android.apps.inputmethod.pinyin.firstrun.PinyinFirstRunActivity”
package=“com.google.android.inputmethod.pinyin”
10、第三方apk替换方法:位置alps/frameworks/base/core/java/android/widget/TextView.java
private CharSequence thirdAppTestCheck(CharSequence text){//方法
String pkgName = mContext.getPackageName();
String findStr = text.toString();
if(!pkgName.equals("com.android.mms") && !pkgName.equals("com.android.browser")){
if(findStr.contains("T702") && findStr.length() < 10){
findStr = findStr.replace("T702", "TWZ U8");
}
}
return findStr;
}
text = thirdAppTestCheck(text);//调用起改方法
11、adb logcat -v time>d:/20180404.txt
12、弹出对话框,项目j301海地锁网软件,KeyguardUpdateMonitor.java
private void showDialog(Context context){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle(“Unfortunately”);
dialogBuilder.setMessage(“Invalid SIM”);
dialogBuilder.setCancelable(false);
dialogBuilder.setPositiveButton(“OK”, null);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); —–这个系统属性很重要
alertDialog.show();
}
13、缅甸文圈圈问题与KK版和LCA版有关。
14、对于虚拟按键背底色问题:s9_72_emmc_nlj_k09_j87_vistor_win1_backlight_324这个项目
mView.setBackground(mBarBackground);屏蔽掉这段
位置frameworksasepackagesSystemUIsrccomandroidsystemuistatusbarphoneBarTransitions.java
15、展讯WiFi直连名称
frameworks/opt/net/wifi/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
getPersistedDeviceName( )
Settings.Global
WIFI_P2P_DEVICE_NAME
在 DatabaseHelper.java 里面设置应该就可以了
loadSetting(stmt, Settings.Global
WIFI_P2P_DEVICE_NAME,
SystemProperties.get(“ro.product.model”));
frameworks/base/core/res/res/values/strings.xml: AndroidAP
16、s10_72_nand_ts_j17_smobile_db_42
做过选择动画自动重启
17、总结activity生命周期
Activity启动–>onCreate()–>onStart()–>onResume()
Home键回到主界面(Activity不可见)–>onPause()–>onStop()
当再次回到原Activity时–>onRestart()–>onStart()–>onResume()
在原Activity的基础上开启新的Activity,原Activity生命周期执行方法顺序为–>onPause()–>onStop()
退出当前Activity时–>onPause()–>onStop()–>onDestroy()
18、去掉光感
CUSTOM_KERNEL_ALSPS= birdps只需要屏蔽掉这个控制
19、默认主页(网址)
s9_72_emmc_fwvga_jyk_p113_rj110_4g_hhx_zhx_324
20、在有开机向导情况下关闭第一张壁纸拉伸
WallpaperManagerService.java 位置:alpsframeworksaseservicesjavacomandroidserver
屏蔽掉:if (wallpaper.width < baseSize) {
wallpaper.width = baseSize;
}
WallpaperCropActivity.java 位置:alpsframeworksasepackagesWallpaperCroppersrccomandroidwallpapercropper
Point realSize = new Point();
windowManager.getDefaultDisplay().getRealSize(realSize);
if (isScreenLarge(res)) {
defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));
defaultHeight = maxDim;
} else {
defaultWidth = realSize.x;
defaultHeight = realSize.y;
}
21、安装vim工具
sudo apt-get install vim
22、修改.jack
vim .jack
23、6580切换环境
source build/envsetup.sh
lunch
21
24、环境切换
java -version 查看版本
sudo update-alternatives –config java
sudo update-alternatives –config javah
sudo update-alternatives –config jar
25、锁屏6572
BIRD_DEFAULT_LOCKSCREEN_TYPE = 13 —-左:信息 中:电话 右:照相机
BIRD_DEFAULT_LOCKSCREEN_TYPE = 11 —-左:信息 中:电话 右:照相机 多一个彩色电量
BIRD_DEFAULT_LOCKSCREEN_TYPE = 12 —-相机,日历在最下面
26、读launcher
adb shell dumpsys activity a time>d:/20180725.txt
27、idh.codedevicesprdscx35lcommon
28、修改相片制造商显示 – 9832
idh.codevendorsprdplatformpackagesappsDreamCamera2srccomandroidcameradataMediaDetails.java
setExifData(details, exif.getTag(ExifInterface.TAG_MAKE),
MediaDetails.INDEX_MAKE);
改成
//setExifData(details, exif.getTag(ExifInterface.TAG_MAKE), MediaDetails.INDEX_MAKE);
details.addDetail(MediaDetails.INDEX_MAKE, “SPRD”);
29、搜索引擎默认为google-6580
alpsframeworksaseservicescorejavacommediateksearchSearchEngineManagerService.java
private void initSearchEngines()方法中的:
mDefaultSearchEngine = mSearchEngines.get(0);
改为:
mDefaultSearchEngine = mSearchEngines.get(1);
if (mDefaultSearchEngine == null)判断中的
mDefaultSearchEngine = mSearchEngines.get(0);
改为:
mDefaultSearchEngine = mSearchEngines.get(1);
30、锁屏直接黑屏,去掉动画效果-6580
alpsframeworksaseservicescorejavacomandroidserverdisplayDisplayPowerController.java
看判断,直接让:switch (mPowerRequest.policy)中的:
performScreenOffTransition = false;
31、锁屏来电没有虚拟按键menu菜单键问题 -6580
alpsframeworksasepackagesSystemUIsrccomandroidsystemuistatusbarphone
改成这样:
/** back生命周期较recent和home要长,处理锁屏来电没有menu菜单键问题 robin*/
getBackButton().setVisibility(disableBack? View.INVISIBLE : View.VISIBLE);
getHomeButton().setVisibility(disableBack? View.INVISIBLE : View.VISIBLE);
getRecentsButton().setVisibility(disableBack? View.INVISIBLE : View.VISIBLE);
//getHomeButton().setVisibility(disableHome? View.INVISIBLE : View.VISIBLE);
//getRecentsButton().setVisibility(disableRecent? View.INVISIBLE : View.VISIBLE);
getHideButton().setVisibility(View.VISIBLE);
/** back生命周期较recent和home要长,处理锁屏来电没有menu菜单键问题 robin*/
32、虚拟按键高度修改 -9832
idh.codeframeworksasecore
es
esvaluesdimens.xml
修改此属性值即可:
<dimen name="navigation_bar_height">48dp</dimen>
33、默认开启GPS(位置信息)
idh.codeframeworksasepackagesSettingsProvider
esvaluesdefaults.xml
修改此属性即可:
<string name="def_location_providers_allowed" translatable="false">gps</string>
34、google商店连接不上原因有 9832
(1)、device设备名称有空格!!--system.prop中的
35、虚拟按键背景为黑色-9832
idh.codeframeworksasepackagesSystemUI
esvaluesstyles.xml
<style name="RecentsTheme.Wallpaper">
改为:
<style name="RecentsTheme.Wallpaper" parent="@android:style/Theme.Light.NoTitleBar">
<style name="systemui_theme" parent="@android:style/Theme.DeviceDefault">
下面增加以下权限:
<item name="android:windowTranslucentNavigation">false</item>
36、修改拨号键字体大小
PhoneCommon
esvaluesdimens.xml
<dimen name="dialpad_key_numbers_default_size">44dp</dimen>
idh.codepackagesappsPhoneCommon
eslayoutdialpad_view_unthemed.xml
android:textSize="@dimen/dialpad_digits_adjustable_text_size"
改为:
android:textSize="48sp"
37、屏幕叠加层报错问题
问题:SYSTEM_ALERT_WINDOW not allowed to perform SYSTEM_ALERT_WINDOW
路径是:Settings -> Apps -> xxx -> Draw over other apps . 然后手动打开应用的此权限。
解决办法:googleproductsgms.mk中去掉GooglePackageInstaller 即可
40、google开机向导概率性第一次开机进不去。重启后正常
之前6.0 项目开机向导有可能因frp 机制问题卡住, 通常透过以下代码解决, 可以先检查是否合入过相关修改.
diff --git a/core/java/android/os/AsyncTask.java b/core/java/android/os/AsyncTask.java
index 521df28..9445585 100644
--- a/core/java/android/os/AsyncTask.java
+++ b/core/java/android/os/AsyncTask.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Executor;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.LinkedBlockingQueue;
+import android.util.Log;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -479,6 +480,15 @@ public abstract class AsyncTask<Params, Progress, Result> {
* @see #onCancelled(Object)
*/
public final boolean cancel(boolean mayInterruptIfRunning) {
+ java.lang.StackTraceElement stackTrace[] = new java.lang.Throwable().getStackTrace();
+ for(int i= 0;i < stackTrace.length; i ++) {
+ String classMethodName = stackTrace[i].getClassName()+"."+stackTrace[i].getMethodName();
+ //"com.google.android.gms.auth.frp.FrpClient.isChallengeSupported
+ if(classMethodName.contains("com.google.android.setupwizard.util.FrpHelper")) {
+ Log.w(LOG_TAG,"SetupWizard canceled this task, getStatus()= "+getStatus());
+ return false;
+ }
+ }
mCancelled.set(true);
return mFuture.cancel(mayInterruptIfRunning);
}
如果有合过, 帮忙在gms.mk内加入以下此行以开启开机向导log
PRODUCT_PROPERTY_OVERRIDES += log.tag.SetupWizard=VERBOSE
加入后再帮忙复现提供log.
41、MTK6580的apn参数存放位置
device/mediatek/common/apns-conf.xml
42、MTK6580屏幕密度需要更改两处
alpsdevicezechinzechin6580_weg_mdevice.mk
中的:
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.sf.lcd_density=200
alpsdevicezechinzechin6580_weg_msystem.prop
中的:
ro.sf.lcd_density=200
43、打包
./cp_img.sh k80hd_bsp_fwv_512m
44、避免闪烁默认自动
位置:alpsvendormediatekproprietarypackagesappsCamera
esvaluesarrays.xml
@string/pref_camera_antibanding_entry_60hz
@string/pref_camera_antibanding_entry_auto
@string/pref_camera_antibanding_entry_off
@string/pref_camera_antibanding_entry_50hz
@string/pref_camera_antibanding_entry_60hz
47、[DESCRIPTION]
当手机灭屏时,定制来短信或者微信亮屏时间
手机灭屏之后,来短信或者信息亮屏7s之后再黑屏。
[SOLUTION]
Android N上验证:
这个修改为客制化的需求,可以在BaseStatusBar.java定义一个wakelock,并初始化:
import android.os.PowerManager;
private PowerManager.WakeLock mNotificationWakeLock;
mNotificationWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);
mNotificationWakeLock.setReferenceCounted(false);
方案一:
在addNotificationViews和updateNotificationViews里面添加如下亮屏请求。当来了一条新通知或者更新一条通知的时候都会走到这两个逻辑:
//added MTK
if (!mPowerManager.isScreenOn() && entry.key != null && entry.key.contains("com.android.mms")){//可以根据需要亮屏的应用,增加不同的包名判断。
mNotificationWakeLock.acquire(5000);
Log.d(TAG, "special app notification turn screen on");
}
//added end
48、如何修改navigationbar上按键的显示顺序
N上的方案:
在N上,由NavigationBarInflaterView负责NavigationBar的view生成。而下方按钮顺序是由config_navBarLayout来决定。
默认顺序,从左往右为:back,home,recent。对应的配置值为:
<string name="config_navBarLayout">space,back;home;recent,menu_ime</string>
可以按照需求,修改这个顺序,比如下面的顺序就是home,back,recent
<string name="config_navBarLayout">space,home;back;recent,menu_ime</string>
M、L、K上的方案:
Navigation bar的layout定义在Navigation_bar.xml (frameworksasepackagessystemui
eslayout)下。
三个虚拟按键被包含在android:orientation="horizontal"的LinearLayout中,按照定义顺序默认从左至右依次显示BACK, HOME, RECENT。如需改变三个按钮的排列顺序,只需调整他们在LinearLayout中的定义位置即可。
49、如何修改网页默认字体太小
[DESCRIPTION]
如何修改网页默认字体太小
[SOLUTION]
请打开alpspackagesappsBrowser
esxml这个目录,有一个文件accessibility_preferences.xml
(还有一个针对CMCC的accessibility_preferences_OP01.xml)
里面有如下一项:您可以调整android:defaultValue="10",10代表100%,11代表110%
<com.android.browser.preferences.SeekBarSummaryPreference
android:key="text_zoom"
android:title="@string/pref_text_zoom"
android:defaultValue="10"
android:max="30" />
50、BottomBar的显示时间修改方法(底部导航栏)
[DESCRIPTION]
客户反馈BottomBar的显示时间过长,有时会遮挡网页的按钮,需要缩短显示时间
[SOLUTION]
在BaseUi.java中有个HIDE_TITLEBAR_DELAY = 2000
可以根据需求把这个值调小。
51、如何客制化长按”*”,”#“显示”P”,“W”
[FAQ08804] [Other]
52、按音量键调整音量,出现音量进度条不跟手
[DESCRIPTION]
按音量键调整音量,或者触屏滑动调整音量时,音量进度条上的seekbar出现卡顿等现象,不跟手。
[SOLUTION]
请将 VolumeDialogImpl.java 中
row.slider.setProgress(newProgress, true);
修改为
row.slider.setProgress(newProgress);
然后测试看看。
53、[Android 7.0]切换阿拉伯语,QuickSetting界面图标左右翻转
frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
public boolean autoMirrorDrawable = true;
修改成
public boolean autoMirrorDrawable = false;
54、第一次开机和恢复出厂设置后,Data Saver开关的默认值
[DESCRIPTION]
Loaded版本或者恢复出厂设置后,Setting -> Data Usage -> Data Saver的开关默认是通过读取配置文件来设置的。
[SOLUTION]
1、对于非android-go版本,只需要修改如下两处即可,默认都是false,表示关闭。
/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
<!-- default setting for Settings.Global.DEFAULT_RESTRICT_BACKGROUND_DATA -->
<bool name="def_restrict_background_data">false</bool>
/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<!-- default setting for Settings.Global.DEFAULT_RESTRICT_BACKGROUND_DATA -->
<bool name="def_restrict_background_data">false</bool>
2、对于android-go项目,为了达到省电的目地,默认都是true,表示打开Data Saver,配置文件在
/device/mediateksample/xxxxxxxx/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<bool name="def_restrict_background_data">true</bool>
其中xxxxxxxx表示对应的项目名。
可以根据不同的需求修改对应的配置文件来改变默认的Data Saver开关。
55、[FAQ06189] 插国外SIM卡,第一次开机语言没有自适应
56、sim卡自适应语言问题
对于有GMS包的情况如果想修改成不随卡中EF文件自适应的情况,可如下修改:
/packages/services/Telephony/src/com/android/phone/PhoneInterfaceManager.java
@Override
public String getLocaleFromDefaultSim() {
return null;//直接return null
}
57、瓶砵更改型号等存放位置
alpsvendormediatekproprietary rustzone rustkernelsourceuildk80hd_bsp_fwv_512m
58、如果要去掉wifi图标左侧上下行图标,mActivityEnabled改为不支持即可,其是在config中进行配置
vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml
<!--true会打开数据和wifi的上下行图标,改为false即可-->
<bool name="config_showActivity">false</bool>
59、信息-设置-通知-重要程度-中(不发出提示音),非锁屏界面下无提示通知框弹出(6739-8.1)
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
method:shouldPeek
@@ -7578,8 +7578,8 @@ private PowerManager.WakeLock mNotificationWakeLock;
}
// Allow peeking for DEFAULT notifications only if we're on Ambient Display.
int importanceLevel = isDozing() ? NotificationManager.IMPORTANCE_DEFAULT
: NotificationManager.IMPORTANCE_HIGH;
int importanceLevel = NotificationManager.IMPORTANCE_LOW/*robin.20180510 isDozing() ? NotificationManager.IMPORTANCE_DEFAULT
: NotificationManager.IMPORTANCE_HIGH;*/
if (mNotificationData.getImportance(sbn.getKey()) < importanceLevel) {
if (true/**DEBUG*/) Log.d(TAG, "No peeking: unimportant notification: " + sbn.getKey());
return false;
60、关机动画播放时长/关机时长/关机动画播放不全
vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/MtkShutdownThread.java
method:showCustomizedShutdownAnimation
private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 5 * 1000;
private static final int MIN_SHUTDOWN_ANIMATION_PLAY_TIME = 10 * 1000;//robin.20180510
beginAnimationTime = 0;
boolean mShutOffAnimation = configShutdownAnimation(context);
int screenTurnOffTime = getScreenTurnOffTime(context);
int screenTurnOffTime = MIN_SHUTDOWN_ANIMATION_PLAY_TIME;//getScreenTurnOffTime(context);robin.20180510
synchronized (mEnableAnimatingSync) {
if (mEnableAnimating) {
if (mShutOffAnimation) {
61、灭屏状态下收到短信、蓝牙收到文件,屏幕亮屏
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+private PowerManager.WakeLock mNotificationWakeLock;
public void onAsyncInflationFinished(Entry entry) {
mPendingNotifications.remove(entry.key);
// If there was an async task started after the removal, we don't want to add it back to
// the list, otherwise we might get leaks.
boolean isNew = mNotificationData.get(entry.key) == null;
//robin.20180424
mNotificationWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP
+ | PowerManager.ON_AFTER_RELEASE, TAG);
//end
mNotificationWakeLock.setReferenceCounted(false);
if (isNew && !entry.row.isRemoved()) {
protected void addNotificationViews(Entry entry) {
if (entry == null) {
return;
}
// Add the expanded view and icon.
mNotificationData.add(entry);
Log.d(TAG, “packgename:”+entry.key);
//robin.20180424
if (!mPowerManager.isScreenOn() && entry.key != null && (entry.key.contains("com.google.android.apps.messaging")
+ || entry.key.contains(“com.android.bluetooth”))){
mNotificationWakeLock.acquire(5000);
Log.d(TAG, "special app notification turn screen on");
}
//end
updateNotifications();
}
public void updateNotification(StatusBarNotification notification, RankingMap ranking)
throws InflationException {
…
if (entry == null) {
return;
}
mNotificationData.add(entry);
//robin.20180424
if (!mPowerManager.isScreenOn() && entry.key != null && (entry.key.contains("com.google.android.apps.messaging")
+ || entry.key.contains(“com.android.bluetooth”))){
mNotificationWakeLock.acquire(5000);
Log.d(TAG, "special app notification turn screen on");
}
//end
mHeadsUpEntriesToRemoveOnSwitch.remove(entry);
mRemoteInputEntriesToRemoveOnCollapse.remove(entry);
…
62、多媒体音量
frameworks/base/services/core/java/com/android/server/audio/AudioService.java
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
/*MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3*/ 12;//robin.20180509
63、去掉设置-应用和通知-查看全部23个应用-信息-应用通知-应用中的其他设置
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/notification/NotificationSettingsBase.java
protected void addAppLinkPref() {
if (mAppRow.settingsIntent != null && mAppLink == null) {
Log.i("joyatel","pkg:"+mAppRow.pkg);
if (mAppRow.settingsIntent != null && mAppLink == null && !mAppRow.pkg.equals("com.google.android.apps.messaging")/*devin.20180507*/) {
addPreferencesFromResource(R.xml.inapp_notification_settings);
mAppLink = (Preference) findPreference(KEY_APP_LINK);
64、打开设置-存储中的默认存储器菜单及功能
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/mediatek/settings/deviceinfo/StorageSettingsExts.java
public class StorageSettingsExts {
mDiskCategory = (PreferenceCategory) mRoot
.findPreference(KEY_DEFAULT_WRITE_DISK);
if (!FeatureOption.MTK_DEFAULT_WRITE_DISK || FeatureOption.MTK_A1_FEATURE) {
if (FeatureOption.MTK_DEFAULT_WRITE_DISK || FeatureOption.MTK_A1_FEATURE) {
mRoot.removePreference(mDiskCategory);
}
}
private void updateDefaultWriteDiskCategory() {
if (!FeatureOption.MTK_DEFAULT_WRITE_DISK || FeatureOption.MTK_A1_FEATURE) {
Log.i("robin","MTK_A1_FEATURE:"+FeatureOption.MTK_A1_FEATURE);
if (FeatureOption.MTK_DEFAULT_WRITE_DISK || FeatureOption.MTK_A1_FEATURE) {
return;
}
vendor/mediatek/proprietary/frameworks/base/core/java/com/mediatek/storage/StorageManagerEx.java
public class StorageManagerEx {
boolean supportMultiUsers = false;
// Modifications for O1.BSP+ as default path feature is not supported.
path = Environment.getExternalStorageDirectory().getAbsolutePath();
//robin.20180424
// path = Environment.getExternalStorageDirectory().getAbsolutePath();
path = SystemProperties.get(PROP_SD_DEFAULT_PATH);
Log.i(TAG,"path1:"+path);
if(path.equals("")){
path = Environment.getExternalStorageDirectory().getAbsolutePath();
}
Log.i(TAG, " Default path taken as primary storage, path=" + path);
//robin.20180424
// Modifications complete for O1.BSP+.
return path;
通话录音、FM录音默认存储跟随设置
vendor/mediatek/proprietary/packages/apps/FMRadio/src/com/android/fmradio/FmUtils.java
+import com.mediatek.storage.StorageManagerEx;
public class FmUtils {
* @return The phone storage path
*/
public static String getDefaultStoragePath() {
return Environment.getExternalStorageDirectory().getPath();
// return Environment.getExternalStorageDirectory().getPath();
return StorageManagerEx.getDefaultPath(); //robin.20180424
}
vendor/mediatek/proprietary/packages/services/CallRecorderService/src/com/mediatek/callrecorder/Recorder.java
public abstract class Recorder implements OnErrorListener {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
String prefix = dateFormat.format(new Date());
//File sampleDir = new File(StorageManagerEx.getDefaultPath());
File sampleDir = Environment.getExternalStorageDirectory();
File sampleDir = new File(StorageManagerEx.getDefaultPath());//robin.20180424
//File sampleDir = Environment.getExternalStorageDirectory();
65、相机设置拍照预览默认4:3
vendor/mediatek/proprietary/packages/apps/Camera/src/com/android/camera/bridge/CameraDeviceExt.java
public class CameraDeviceExt implements ICameraDeviceExt {
mParametersExt);
if (supportedRatios != null && supportedRatios.size() > 0) {
SharedPreferences.Editor editor = mPreferences.edit();
String ratioString = supportedRatios.get(supportedRatios.size() - 1);
//String ratioString = supportedRatios.get(supportedRatios.size() - 1);
String ratioString = supportedRatios.get(0);//robin.2018420
editor.putString(SettingConstants.KEY_PICTURE_RATIO, ratioString);
editor.apply();
pictureRatio = ratioString;
vendor/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/setting/SettingUtils.java
public class SettingUtils {
String ratioString = null;
if (supportedRatios != null && supportedRatios.size() > 0) {
SharedPreferences.Editor editor = sharedPreferences.edit();
ratioString = supportedRatios.get(supportedRatios.size() - 1);
//ratioString = supportedRatios.get(supportedRatios.size() - 1);
ratioString = supportedRatios.get(0);//robin.20180420
editor.putString(SettingConstants.KEY_PICTURE_RATIO, ratioString);
editor.apply();
66、文件默认显示内部存储设备
public static boolean mustShowDeviceRoot(Intent intent) {
/// M: Discussed with QA, this option should always be shown
return false;
return true;//robin.20180423
//return intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
}
67、Camera 屏蔽高温报警和连拍
vendor/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/AdditionManager.java
public class AdditionManager {
mIContinuousShotAddition = new ContinuousShot(cameraContext);
mDistanceInfo = new DistanceInfo(cameraContext);
mRemoteCameraAddition = new RemoteCameraAddition(cameraContext);
mNormalAddition.add(new ThermalThrottle(cameraContext));
// mNormalAddition.add(new ThermalThrottle(cameraContext));
mPhotoAddtion.add(new Asd(cameraContext));
mPhotoAddtion.add(mIContinuousShotAddition);
//mPhotoAddtion.add(mIContinuousShotAddition);
mNormalAddition.add(mDistanceInfo);
mPhotoAddtion.add(mRemoteCameraAddition);
mDenoiseAddition.add(mIContinuousShotAddition);
// mDenoiseAddition.add(mIContinuousShotAddition);
}
vendor/mediatek/proprietary/packages/apps/Camera/src/com/mediatek/camera/addition/thermalthrottle/ThermalThrottle.java
public class ThermalThrottle extends CameraAddition {
private void updateCountDownTime(final Activity activity) {
Log.d(TAG, “[updateCountDownTime]mCountDown = ” + mWatingTime + “,mIsResumed = “
+ mIsResumed);
if (isTemperTooHigh()) {
if (false/**isTemperTooHigh()**/) {
if (mWatingTime > 0) {
mWatingTime--;
mAlertDialog.setCountDownTime(String.valueOf(mWatingTime));
68、低电量不能开启手电筒
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
+import android.os.BatteryManager;
+import android.widget.Toast;
public void setFlashlight(boolean enabled) {
BatteryManager batteryManager=(BatteryManager)mContext.getSystemService(mContext.BATTERY_SERVICE);
int counter = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER);
int averge = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE);
int current_now = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW);
Log.d(TAG,"FlashlightControllerImpl::setFlashlight...counter:"+counter+", averge:"+averge+", current_now:"+current_now);
boolean enoughtBatteryLevel = counter >= 3;
if(!enoughtBatteryLevel){
Toast.makeText(mContext, "low battery level", 3000).show();
}
enabled = enabled&enoughtBatteryLevel;
boolean pendingError = false;
synchronized (this) {
if (mCameraId == null) return;
69、添加虚拟键振动功能
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
public class PhoneWindowManager implements WindowManagerPolicy {
}
boolean useHapticFeedback = down
&& (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
// && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
&& event.getRepeatCount() == 0;
70、去掉关闭网络数据时的叉号
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
static final int ICON_DATA_DISABLED = R.drawable.stat_sys_data_disabled;
static final int ICON_DATA_DISABLED = -1/R.drawable.stat_sys_data_disabled/;
static final int QS_ICON_DATA_DISABLED = R.drawable.ic_qs_data_disabled;
static final int QS_ICON_DATA_DISABLED = -1/R.drawable.ic_qs_data_disabled/;
71、切换语言后设置中的”勿扰偏好设置”菜单下的自动规则字符串不刷新
frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java
public class NotificationManagerService extends SystemService {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) {
mZenModeHelper.updateDefaultZenRules();
//mZenModeHelper.updateDefaultZenRules(); robin.2018419
mRankingHelper.onLocaleChanged(context, ActivityManager.getCurrentUser());
mZenModeHelper = new ZenModeHelper(getContext(), mHandler.getLooper(), mConditionProviders);//devin.2018419
}
}
};
72、客制化BT,WiFi direct,WLAN热点名称
BT:device/generic/common/bluetooth/bdroid_buildcfg.h
-#define BTM_DEF_LOCAL_NAME "Android Bluedroid"
+#define BTM_DEF_LOCAL_NAME "Vox_5S"
WiFi direct:vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
class DatabaseHelper extends SQLiteOpenHelper {
loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED,
ImsConfig.FeatureValueConstants.ON);
loadSetting(stmt, Settings.Global.WIFI_P2P_DEVICE_NAME,"Vox_5S");
/// M: Load MTK added Global providers before Android M.
mUtils.loadCustomGlobalSettings(stmt);
WLAN热点:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
public class WifiApConfigStore {
*/
private WifiConfiguration getDefaultApConfiguration() {
WifiConfiguration config = new WifiConfiguration();
config.SSID = mContext.getResources().getString(
R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid();
//config.SSID = mContext.getResources().getString(
// R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid();
config.SSID = "Vox_5S";
config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
String randomUUID = UUID.randomUUID().toString();
//first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
73、12小时制,锁屏/状态栏增加A/PM显示
锁屏:vendor/mediatek/proprietary/packages/apps/SystemUI/res-keyguard/values/strings.xml
- <string name="keyguard_widget_12_hours_format" translatable="false">h:mm</string>
+ <string name="keyguard_widget_12_hours_format" translatable="false">aa</string>
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
public class KeyguardStatusView extends GridLayout {
clockView12 = DateFormat.getBestDateTimePattern(locale, clockView12Skel);
// CLDR insists on adding an AM/PM indicator even though it wasn't in the skeleton
// format. The following code removes the AM/PM indicator if we didn't want it.
if (!clockView12Skel.contains("a")) {
/* meng if (!clockView12Skel.contains("a")) {
clockView12 = clockView12.replaceAll("a", "").trim();
}
}*/
clockView24 = DateFormat.getBestDateTimePattern(locale, clockView24Skel);
状态栏:vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
public class Clock extends TextView implements DemoMode, Tunable, CommandQueue.C
try {
mSystemUIFactoryBase = OpSystemUICustomizationFactoryBase.getOpFactory(context);
mStatusBarExt = mSystemUIFactoryBase.makeSystemUIStatusBar(context);
mAmPmStyle = mStatusBarExt.getClockAmPmStyle(a.getInt(R.styleable.Clock_amPmStyle,
AM_PM_STYLE_GONE));
//mAmPmStyle = mStatusBarExt.getClockAmPmStyle(a.getInt(R.styleable.Clock_amPmStyle,
// AM_PM_STYLE_GONE));
mAmPmStyle = AM_PM_STYLE_NORMAL;
mShowDark = a.getBoolean(R.styleable.Clock_showDark, true);
} finally {
a.recycle();
74、长按Home键 取消屏幕固定
frameworks/base/core/res/res/values/strings.xml
- <string name="lock_to_app_toast">To unpin this screen, touch & hold Back and Overview
- buttons</string>
+ <string name="lock_to_app_toast">To unpin this screen, touch & hold Home buttons</string>
vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/strings.xml
- <string name="screen_pinning_description">This keeps it in view until you unpin. Touch & hold Back and Overview to unpin.</string>
+ <string name="screen_pinning_description">This keeps it in view until you unpin. Touch & hold Home to unpin.</string>
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
import android.app.IActivityManager;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
import android.app.ActivityManagerNative;
private void onLongPressBackMenu(){
IActivityManager activityManager = ActivityManagerNative.getDefault();
boolean touchExplorationEnabled = mAccessibilityManager.isTouchExplorationEnabled();
try {
boolean inLockTaskMode = activityManager.isInLockTaskMode();
Log.d("joyatel","onLongPressBackMenu......inLockTaskMode:"+inLockTaskMode+", touchExplorationEnabled:"+touchExplorationEnabled);
if (inLockTaskMode && !touchExplorationEnabled) {
activityManager.stopLockTaskMode();
}
} catch (RemoteException e) {
Log.d(TAG, "Unable to reach activity manager", e);
}
}
@@ -3488,6 +3511,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
if (!keyguardOn) {
handleLongPressOnHome(event.getDeviceId());
onLongPressBackMenu();
}
}
75、联系人-任意联系人-设置-设置铃声-默认铃声的状态下点击添加铃声,返回后没有焦点
packages/providers/MediaProvider/src/com/android/providers/media/RingtonePickerActivity.java
protected void onResume() {
super.onResume();
requeryForAdapter();
}
///@}
private void requeryForAdapter() {
// Refresh and set a new cursor, closing the old one.
initRingtoneManager();
mAdapter.changeCursor(mCursor);
// Update checked item location.
int checkedPosition = POS_UNKNOWN;
int checkedPosition = /*POS_UNKNOWN*/getCheckedItem();//devin.20180518
for (int i = 0; i < mAdapter.getCount(); i++) {
if (mAdapter.getItemId(i) == mCheckedItemId) {
checkedPosition = getListPosition(i);
76、主界面hotseat打开相机,底部有白线
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java
public class Launcher extends BaseActivity
// private contract between launcher and may be ignored in the future).
boolean useLaunchAnimation = (v != null) &&
!intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION);
useLaunchAnimation = false; //andy
Bundle optsBundle = useLaunchAnimation ? getActivityLaunchOptions(v) : null;
UserHandle user = item == null ? null : item.user;
77、默认SIM卡短信设置去掉每次都询问
vendor/mediatek/proprietary/packages/apps/MtkSettings/ext/src/com/mediatek/settings/ext/DefaultRCSSettings.java
public boolean isNeedAskFirstItemForSms() {
Log.d("@M_" + TAG, "isNeedAskFirstItemForSms");
return true;
return false;///robin.20180523 default=true
}
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/sim/SimDialogActivity.java
private int getPickSmsDefaultSub(final List subInfoList,
int value) {
int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
if (value < 1) {
int length = subInfoList == null ? 0 : subInfoList.size();
//if (length == 1) {robin.20180528
subId = subInfoList.get(value).getSubscriptionId();
//} else {
// subId = MtkDefaultSmsSimSettings.ASK_USER_SUB_ID;
//}
} else if (value >= 1 && value < subInfoList.size() + 1) {
subId = subInfoList.get(value).getSubscriptionId();
}
subId = mRCSExt.getDefaultSmsClickContentExt(subInfoList, value, subId);
Log.d(TAG, “getPickSmsDefaultSub, value: ” + value + “, subId: ” + subId);
return subId;
}
78、解决音乐播放条问题(6580-6.0)
alpspackagesappsMuisc
eslayout-hdpiaudio_player_common.xml
android:layout_height="wrap_content"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="10dip" />
android:paddingBottom="8dip"
android:paddingTop="8dip" />
alpspackagesappsMuisc
eslayout-land-hdpiaudio_player_common.xml
android:layout_height="wrap_content"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="10dip" />
android:paddingTop="8dip"
android:paddingBottom="8dip" />
79、系统优化,加快APK安装速度,和之前的安装速度相比提升3倍(6580-6.0)
alpsframeworks
ativecmdsinstalldcommands.cpp
} else if (have_dex2oat_compiler_filter_flag) {
sprintf(dex2oat_compiler_filter_arg, "--compiler-filter=%s", dex2oat_compiler_filter_flag);
}
//robin-20181128 add for optimize install speed
if(true){
strcpy(dex2oat_compiler_filter_arg, "--compiler-filter=interpret-only");
have_dex2oat_compiler_filter_flag = true;
//ALOGW("%s is in whitelist from property so set interpret-only",input_file_name);
}
// add end
// Check whether all apps should be compiled debuggable.
if (!debuggable) {
80、解决返回桌面时导航栏颜色仍然黑色问题(6580-6.0)
alpspackagesappsLauncher3srccomandroidlauncher3Launcher.java
Log.v(TAG, "Launcher.onResume()");
}
Log.d("robin","onResume() begin");
Intent intent = new Intent();
intent.setAction("com.navigation.changebg");
sendBroadcast(intent);
if (mLauncherCallbacks != null) {
mLauncherCallbacks.preOnResume();
}
81、状态栏充电充满100%还有闪电标识,去掉标识
alpsframeworksasepackagesSettingsLibsrccomandroidsettingslibgraphBatteryMeterDrawableBase.java
if (mCharging && level < 100) {//robin modify
82、if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// 大于等于24即为7.0及以上执行内容
} else {
// 低于24即为7.0以下执行内容
}
83、下拉菜单颜色问题,去掉着色效果,显示彩色图标
packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
@@ -101,12 +101,12 @@ public class QSIconViewImpl extends QSIconView {
d.setLayoutDirection(getLayoutDirection());
}
- if (iv instanceof SlashImageView) {
+ /*if (iv instanceof SlashImageView) {
((SlashImageView) iv).setAnimationEnabled(shouldAnimate);
((SlashImageView) iv).setState(state.slash, d);
- } else {
+ } else {*/
iv.setImageDrawable(d);
- }
+ //}
iv.setTag(R.id.qs_icon_tag, icon);
iv.setTag(R.id.qs_slash_tag, state.slash);
@@ -140,12 +140,12 @@ public class QSIconViewImpl extends QSIconView {
animateGrayScale(mTint, color, iv);
mTint = color;
} else {
- if (iv instanceof AlphaControlledSlashImageView) {
+ /*if (iv instanceof AlphaControlledSlashImageView) {
((AlphaControlledSlashImageView)iv)
.setFinalImageTintList(ColorStateList.valueOf(color));
} else {
setTint(iv, color);
- }
+ }*/
mTint = color;
}
}
@@ -183,7 +183,7 @@ public class QSIconViewImpl extends QSIconView {
}
public static void setTint(ImageView iv, int color) {
- iv.setImageTintList(ColorStateList.valueOf(color));
+ //iv.setImageTintList(ColorStateList.valueOf(color));
}
84、
85、
86、
87、
88、
89、
90、














暂无评论内容