MTK-展讯修改笔记

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 &amp; hold Back and Overview
-        buttons</string>
+    <string name="lock_to_app_toast">To unpin this screen, touch &amp; 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 &amp; hold Back and Overview to unpin.</string>
+    <string name="screen_pinning_description">This keeps it in view until you unpin. Touch &amp; 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、

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容