package com.rockchip.alexa.jacky.fragment;
|
|
import android.os.Bundle;
|
import android.support.annotation.Nullable;
|
import android.support.v7.widget.Toolbar;
|
import android.view.LayoutInflater;
|
import android.view.Menu;
|
import android.view.MenuInflater;
|
import android.view.MenuItem;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.Button;
|
import android.widget.TextView;
|
|
import com.amazon.identity.auth.device.api.authorization.AuthorizationManager;
|
import com.amazon.identity.auth.device.api.authorization.AuthorizeRequest;
|
import com.amazon.identity.auth.device.api.authorization.ScopeFactory;
|
import com.rockchip.alexa.jacky.R;
|
import com.rockchip.alexa.jacky.activity.AlexaActivity;
|
import com.rockchip.alexa.jacky.app.AuthConstants;
|
import com.rockchip.alexa.jacky.app.BaseApplication;
|
import com.rockchip.alexa.jacky.app.CodeChallengeWorkflow;
|
import com.rockchip.alexa.jacky.info.DeviceProvisioningInfo;
|
import com.rockchip.alexa.jacky.listener.OnSingleClickListener;
|
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.UUID;
|
|
/**
|
* Created by Administrator on 2017/3/21.
|
*/
|
|
public class AlexaIndexFragment extends NoFragment {
|
private static final String TAG = "AlexaIndexFragment";
|
private Toolbar mToolbar;
|
private TextView mBtnBack;
|
private TextView mBtnSkip;
|
|
public Button mLoginBtn;
|
@Nullable
|
@Override
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
return inflater.inflate(R.layout.frag_alexa_index, container, false);
|
}
|
|
@Override
|
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
super.onViewCreated(view, savedInstanceState);
|
|
mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
|
mBtnBack = (TextView) view.findViewById(R.id.toolbar_back);
|
mBtnSkip = (TextView) view.findViewById(R.id.toolbar_skip);
|
mLoginBtn = (Button) view.findViewById(R.id.frag_alexa_index_login);
|
mLoginBtn.setOnClickListener(new OnSingleClickListener() {
|
@Override
|
protected void onSingleClick(View view) {
|
DeviceProvisioningInfo deviceProvisioningInfo = null;
|
if (AuthConstants.COMMUNICATE_TYPE.equals(AuthConstants.CommunicateType.SOCKET)) {
|
deviceProvisioningInfo = ((AlexaActivity) getActivity()).getDeviceProvisioningInfo();
|
} else if (AuthConstants.COMMUNICATE_TYPE.equals(AuthConstants.CommunicateType.HTTPS)) {
|
deviceProvisioningInfo = new DeviceProvisioningInfo(AuthConstants.DeviceProvisioning.PRODUCT_ID, AuthConstants.DeviceProvisioning.DSN, UUID.randomUUID().toString(),
|
CodeChallengeWorkflow.getInstance().getCodeChallenge(), CodeChallengeWorkflow.getInstance().getCodeChallengeMethod(), CodeChallengeWorkflow.getInstance().getCodeVerifier());
|
((AlexaActivity) getActivity()).setDeviceProvisioningInfo(deviceProvisioningInfo);
|
}
|
if (deviceProvisioningInfo != null) {
|
JSONObject scopeData = new JSONObject();
|
final JSONObject productInstanceAttributes = new JSONObject();
|
final String codeChallenge = deviceProvisioningInfo.getCodeChallenge();
|
final String codeChallengeMethod = deviceProvisioningInfo.getCodeChallengeMethod();
|
|
try {
|
productInstanceAttributes.put(AuthConstants.DEVICE_SERIAL_NUMBER, BaseApplication.getApplication().getDsn());
|
scopeData.put(AuthConstants.PRODUCT_INSTANCE_ATTRIBUTES, productInstanceAttributes);
|
scopeData.put("productID", deviceProvisioningInfo.getProductId());
|
|
AuthorizationManager.authorize(new AuthorizeRequest.Builder(((AlexaActivity) getActivity()).getRequestContext())
|
.addScope(ScopeFactory.scopeNamed(AuthConstants.ALEXA_ALL_SCOPE, scopeData))
|
.forGrantType(AuthorizeRequest.GrantType.AUTHORIZATION_CODE)
|
.withProofKeyParameters(codeChallenge, codeChallengeMethod)
|
.build());
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
});
|
|
mBtnBack.setOnClickListener(new OnSingleClickListener() {
|
@Override
|
protected void onSingleClick(View view) {
|
startFragment(SupportsFragment.class, false);
|
}
|
});
|
|
mBtnSkip.setOnClickListener(new OnSingleClickListener() {
|
@Override
|
protected void onSingleClick(View view) {
|
startFragment(SupportsFragment.class, false);
|
}
|
});
|
}
|
|
@Override
|
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
super.onActivityCreated(savedInstanceState);
|
((AlexaActivity)getActivity()).setFragment(this);
|
setToolbar(mToolbar);
|
|
// Set title for toolbar:
|
// setTitle("Alexa");
|
|
// Display close button.
|
// displayHomeAsUpEnabled(R.drawable.ic_toolbar_back);
|
}
|
|
@Override
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
super.onCreateOptionsMenu(menu, inflater);
|
// inflater.inflate(R.menu.menu_fragment_main, menu);
|
}
|
|
@Override
|
public boolean onOptionsItemSelected(MenuItem item) {
|
return super.onOptionsItemSelected(item);
|
}
|
}
|