/* HvcSettingStepsActivity.java Copyright (c) 2015 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.hvc.setting; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import org.deviceconnect.android.activity.PermissionUtility; import org.deviceconnect.android.deviceplugin.hvc.R; import org.deviceconnect.android.deviceplugin.hvc.ble.BleUtils; import org.deviceconnect.android.ui.activity.DConnectSettingPageFragmentActivity; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; /** * HVC setting activity. * * @author NTT DOCOMO, INC. */ public class HvcSettingStepsActivity extends DConnectSettingPageFragmentActivity { /** * Page count. */ private static final int TUTORIAL_PAGE_NUMBER = 3; /** * Logger name. */ private static final String LOGGER_NAME = "HvcSettingStepsActivity"; /** フラグメント一覧. */ private List<Fragment> mFragments = new ArrayList<Fragment>(); @Override public int getPageCount() { return TUTORIAL_PAGE_NUMBER; } @Override public Fragment createPage(final int position) { if (mFragments.size() == 0) { BaseFragment f1 = new AboutFragment(); f1.setActivity(this); BaseFragment f2 = new HvcConnectFragment(); f2.setActivity(this); BaseFragment f3 = new BluetoothSettingPromptFragment(); f3.setActivity(this); mFragments.add(f1); mFragments.add(f2); mFragments.add(f3); } return mFragments.get(position); } /** * Base Fragment. * */ public static class BaseFragment extends Fragment { /** ロガー. */ protected Logger mLogger = Logger.getLogger(LOGGER_NAME); /** * チュートリアルページアクティビティ. */ HvcSettingStepsActivity mActivity; /** * アクティビティを設定する. * @param activity activity */ public void setActivity(final HvcSettingStepsActivity activity) { mActivity = activity; } } /** * step1. About HVC Device Plugin. */ public static class AboutFragment extends BaseFragment { @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { final int layoutId = R.layout.hvc_setting_0; View root = inflater.inflate(layoutId, container, false); return root; } @Override public void onResume() { super.onResume(); } } /** * 手順2 HVC-Cの準備. */ public static class HvcConnectFragment extends BaseFragment { @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { final int layoutId = R.layout.hvc_setting_1; View root = inflater.inflate(layoutId, container, false); return root; } } /** * 手順3 Bluetooth設定. */ public static class BluetoothSettingPromptFragment extends BaseFragment { private final Handler mHandler = new Handler(); private Button mBlePermissionBtn; @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { final int layoutId = R.layout.hvc_setting_2; View root = inflater.inflate(layoutId, container, false); Button button = (Button) root.findViewById(R.id.button_launch_bluetooth_setting); button.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); } }); View permission = root.findViewById(R.id.ble_permission); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { permission.setVisibility(View.GONE); } else { permission.setVisibility(View.VISIBLE); } mBlePermissionBtn = (Button) root.findViewById(R.id.button_permission); mBlePermissionBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (BleUtils.isBLEPermission(getActivity())) { openAndroidSettings(); } else { requestPermissions(); } } }); return root; } @Override public void onResume() { super.onResume(); if (mBlePermissionBtn != null) { if (BleUtils.isBLEPermission(getActivity())) { mBlePermissionBtn.setText(getString(R.string.setting_step3_ble_permission_on)); mBlePermissionBtn.setBackgroundResource(R.drawable.button_red); } else { mBlePermissionBtn.setText(getString(R.string.setting_step3_ble_permission_off)); mBlePermissionBtn.setBackgroundResource(R.drawable.button_blue); } } } private void openAndroidSettings() { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getActivity().getPackageName())); startActivity(intent); } private void requestPermissions() { PermissionUtility.requestPermissions(getActivity(), mHandler, BleUtils.BLE_PERMISSIONS, new PermissionUtility.PermissionRequestCallback() { @Override public void onSuccess() { } @NonNull @Override public void onFail(final String deniedPermission) { } }); } } }