增加开机时间的类:
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/BootTimePreferenceController.java
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.deviceinfo;
import android.app.Activity;
import android.app.Fragment;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.BidiFormatter;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.mediatek.settings.UtilsExt;
import com.mediatek.settings.ext.IDeviceInfoSettingsExt;
public class BootTimePreferenceController extends AbstractPreferenceController implements
LifecycleObserver, OnResume {
private static final boolean DEBUG = true;
private static final String TAG = "cytest";
private static final int EVENT_UPDATE_STATS = 500;
private static final String KEY_UP_TIME = "boot_time";
private final Activity mActivity;
private Fragment mFragment;
private Preference preference;
private IDeviceInfoSettingsExt mExt;
private Handler mUpdateTimeHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case EVENT_UPDATE_STATS:
updateTimes();
sendEmptyMessageDelayed(EVENT_UPDATE_STATS, 1000);
break;
}
}
};
public BootTimePreferenceController(Context context, Activity activity, Fragment fragment,
Lifecycle lifecycle) {
super(context);
mActivity = activity;
mFragment = fragment;
mExt = UtilsExt.getDeviceInfoSettingsExt(mActivity);
}
public void setUpTimes(Fragment hostFragment) {
mFragment = hostFragment;
mUpdateTimeHandler.sendEmptyMessage(EVENT_UPDATE_STATS);
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
preference = screen.findPreference(KEY_UP_TIME);
if (preference != null) {
try {
preference.setEnabled(true);
mUpdateTimeHandler.sendEmptyMessage(EVENT_UPDATE_STATS);
} catch (Exception e) {
preference.setSummary(R.string.device_info_default);
}
}
}
@Override
public String getPreferenceKey() {
return KEY_UP_TIME;
}
@Override
public boolean isAvailable() {
return true;
}
@Override
public void onResume() {
}
private void updateTimes() {
long at = SystemClock.uptimeMillis() / 1000;
long ut = SystemClock.elapsedRealtime() / 1000;
if (ut == 0) {
ut = 1;
}
preference.setSummary(convert(ut));
}
private String calcTimes() {
long at = SystemClock.uptimeMillis() / 1000;
long ut = SystemClock.elapsedRealtime() / 1000;
if (ut == 0) {
ut = 1;
}
return convert(ut);
}
private String pad(int n) {
if (n >= 10) {
return String.valueOf(n);
} else {
return "0" + String.valueOf(n);
}
}
private String convert(long t) {
int s = (int)(t % 60);
int m = (int)((t / 60) % 60);
int h = (int)((t / 3600));
return h + ":" + pad(m) + ":" + pad(s);
}
}
vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\aboutphone\MyDeviceInfoFragment.java中:
import com.android.settings.deviceinfo.BootTimePreferenceController;//add
private static List<AbstractPreferenceController> buildPreferenceControllers(
Context context,
Activity activity,
MyDeviceInfoFragment fragment,
Lifecycle lifecycle) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
.
.
.
controllers.add(new BootTimePreferenceController(context, activity, fragment, lifecycle));//add
.
.
.
return controllers;
}
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/DeviceInfoSettings.java中:
//by begin
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ use(BootTimePreferenceController.class).setUpTimes(this);
+ }
+ //end
vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/my_device_info.xml中:
//add begin
<Preference
android:key="boot_time"
android:order="47"
android:title="@string/boot_time"
android:summary="@string/summary_placeholder"
settings:allowDividerAbove="true"/>
//end
其他需要在vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values/strings和vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values-zh-rCN/strings中配置文字