/*
ConfirmActivity.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.linking.linking;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import org.deviceconnect.android.deviceplugin.linking.BuildConfig;
import org.deviceconnect.android.deviceplugin.linking.LinkingApplication;
import org.deviceconnect.android.deviceplugin.linking.R;
public class ConfirmActivity extends Activity {
private static final String TAG = "ConfirmActivity";
private static final int REQUEST_CODE = 4;
public static final String EXTRA_REQUEST_SENSOR_TYPE = "extra_request_sensor_type";
/**
* 0:ジャイロセンサー
* 1:加速度センサー
* 2:方位センサー
* 3: 電池残量
* 4: 温度センサー
* 5: 湿度センサー
* 6~255:拡張センサー
*/
private int[] mRequestType;
private int mIndex;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_linking_confirm);
if (BuildConfig.DEBUG) {
Log.i(TAG, "ConfirmActivity:onCreate");
}
Intent intent = getIntent();
if (intent != null) {
mRequestType = intent.getIntArrayExtra(EXTRA_REQUEST_SENSOR_TYPE);
if (BuildConfig.DEBUG) {
if (mRequestType != null) {
for (int type : mRequestType) {
Log.d(TAG, "RequestType: " + type);
}
}
}
}
if (mRequestType == null || mRequestType.length == 0) {
if (BuildConfig.DEBUG) {
Log.e(TAG, "RequestType is null.");
}
finishConfirmActivity();
} else {
startSensor();
}
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
LinkingUtil.Result result = LinkingUtil.Result.valueOf(resultCode);
if (BuildConfig.DEBUG) {
Log.i(TAG, "ConfirmActivity:onActivityResult");
Log.i(TAG, "requestCode: " + requestCode);
Log.i(TAG, "resultCode: " + result);
Log.i(TAG, "mIndex: " + mIndex);
}
if (requestCode != REQUEST_CODE) {
finishConfirmActivity();
return;
}
if (result != LinkingUtil.Result.RESULT_OK &&
result != LinkingUtil.Result.RESULT_SENSOR_UNSUPPORTED) {
finishConfirmActivity();
return;
}
if (mRequestType.length <= mIndex) {
finishConfirmActivity();
return;
}
startSensor();
}
private void finishConfirmActivity() {
// Intent intent = getIntent();
// if (intent != null) {
// LinkingDeviceManager mgr = getLinkingDeviceManager();
// if (mgr != null) {
// mgr.onConfirmActivityResult(intent);
// }
// }
finish();
}
private void startSensor() {
if (BuildConfig.DEBUG) {
Log.i(TAG, "ConfirmActivity:startSensor type:" + mRequestType[mIndex]);
}
Intent intent = new Intent(LinkingUtil.ACTION_START_SENSOR);
intent.setComponent(new ComponentName(LinkingUtil.PACKAGE_NAME, LinkingUtil.ACTIVITY_NAME));
intent.putExtras(getIntent().getExtras());
intent.putExtra(LinkingUtil.EXTRA_SENSOR_TYPE, mRequestType[mIndex]);
mIndex++;
try {
startActivityForResult(intent, REQUEST_CODE);
} catch (Exception e) {
if (BuildConfig.DEBUG) {
e.printStackTrace();
}
finishConfirmActivity();
}
}
private LinkingDeviceManager getLinkingDeviceManager() {
LinkingApplication app = (LinkingApplication) getApplication();
return app.getLinkingDeviceManager();
}
}