org.deviceconnect.android.uiapp.fragment.profile.BatteryProfileFragment.java Source code

Java tutorial

Introduction

Here is the source code for org.deviceconnect.android.uiapp.fragment.profile.BatteryProfileFragment.java

Source

/*
 BatteryProfileFragment.java
 Copyright (c) 2014 NTT DOCOMO,INC.
 Released under the MIT license
 http://opensource.org/licenses/mit-license.php
 */
package org.deviceconnect.android.uiapp.fragment.profile;

import java.io.IOException;
import java.net.URISyntaxException;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.deviceconnect.android.uiapp.R;
import org.deviceconnect.android.uiapp.fragment.SmartDevicePreferenceFragment;
import org.deviceconnect.message.DConnectMessage;
import org.deviceconnect.message.basic.message.DConnectResponseMessage;
import org.deviceconnect.message.http.impl.factory.HttpMessageFactory;
import org.deviceconnect.profile.BatteryProfileConstants;
import org.deviceconnect.utils.URIBuilder;

import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * ?.
 */
public class BatteryProfileFragment extends SmartDevicePreferenceFragment {

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // create layout(preference screen)
        addPreferencesFromResource(R.xml.battery_profile);
        // load current battery statuses
        (new BatteryStatusLoader()).execute();
    }

    @Override
    public View onCreateView(final LayoutInflater paramLayoutInflater, final ViewGroup paramViewGroup,
            final Bundle paramBundle) {
        View view = super.onCreateView(paramLayoutInflater, paramViewGroup, paramBundle);
        view.setBackgroundColor(getResources().getColor(android.R.color.background_light));
        return view;
    }

    /**
     * ?.
     */
    private class BatteryStatusLoader extends AsyncTask<String, Integer, DConnectMessage> {

        @Override
        protected DConnectMessage doInBackground(final String... args) {
            URIBuilder uriBuilder = new URIBuilder();
            uriBuilder.setProfile(BatteryProfileConstants.PROFILE_NAME);
            uriBuilder.addParameter(DConnectMessage.EXTRA_DEVICE_ID, getSmartDevice().getId());
            uriBuilder.addParameter(DConnectMessage.EXTRA_ACCESS_TOKEN, getAccessToken());

            DConnectMessage message;
            try {
                HttpResponse response = getDConnectClient().execute(getDefaultHost(),
                        new HttpGet(uriBuilder.build()));
                message = (new HttpMessageFactory()).newDConnectMessage(response);
            } catch (IOException e) {
                message = new DConnectResponseMessage(DConnectMessage.RESULT_ERROR);
            } catch (URISyntaxException e) {
                message = new DConnectResponseMessage(DConnectMessage.RESULT_ERROR);
            }

            return message;
        }

        @Override
        protected void onPostExecute(final DConnectMessage result) {
            super.onPostExecute(result);

            if (getActivity().isFinishing()) {
                return;
            }

            if (result.getInt(DConnectMessage.EXTRA_RESULT) != DConnectMessage.RESULT_OK) {
                return;
            }

            // set profile list
            PreferenceCategory batteryStatusList = (PreferenceCategory) findPreference(
                    getString(R.string.key_battery_profile_list));

            try {
                Number level = (Number) result.get(BatteryProfileConstants.PARAM_LEVEL);
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.level));
                pref.setSummary(Double.toString(level.doubleValue()) + "%");
                batteryStatusList.addPreference(pref);
            } catch (Exception e) {
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.level));
                pref.setSummary("-");
                batteryStatusList.addPreference(pref);
            }

            try {
                boolean charging = result.getBoolean(BatteryProfileConstants.PARAM_CHARGING);
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.charging));
                pref.setSummary(Boolean.toString(charging));
                batteryStatusList.addPreference(pref);
            } catch (Exception e) {
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.charging));
                pref.setSummary("-");
                batteryStatusList.addPreference(pref);
            }

            try {
                int chargingTime = result.getInt(BatteryProfileConstants.PARAM_CHARGING_TIME);
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.chargingtime));
                pref.setSummary(Integer.toString(chargingTime));
                batteryStatusList.addPreference(pref);
            } catch (Exception e) {
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.chargingtime));
                pref.setSummary("-");
                batteryStatusList.addPreference(pref);
            }

            try {
                int dischargingTime = result.getInt(BatteryProfileConstants.PARAM_DISCHARGING_TIME);
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.dischargingtime));
                pref.setSummary(Integer.toString(dischargingTime));
                batteryStatusList.addPreference(pref);
            } catch (Exception e) {
                Preference pref = new Preference(getActivity());
                pref.setTitle(getString(R.string.dischargingtime));
                pref.setSummary("-");
                batteryStatusList.addPreference(pref);
            }
        }
    }

}