Android P我的设备中增加开机时间显示

增加开机时间的类:

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中配置文字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值