Newer
Older
CosmosClient / app / src / main / java / com / example / cosmosclient / views / QRcodeReadingActivity.java
t-tai on 18 Jul 2019 4 KB #403
package com.example.cosmosclient.views;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.cosmosclient.R;
import com.example.cosmosclient.app.Cosmos;
import com.example.cosmosclient.entities.JoinGroupResponse;
import com.example.cosmosclient.entities.User;
import com.example.cosmosclient.resources.JoinGroupRest;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.journeyapps.barcodescanner.CaptureActivity;

import java.lang.reflect.Member;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;

public class QRcodeReadingActivity extends CaptureActivity {
    public String QRcodeData = null;
    TextView QRcodeResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_qrcode_reading);
        QRcodeResult = findViewById(R.id.QRcodeResult);

        //ここでQRコードリーダーオブジェクト生成
        IntentIntegrator integrator = new IntentIntegrator(this);
//        new IntentIntegrator(QRcodeReadingActivity.this).initiateScan();
        // スキャン画面の回転の制御
        integrator.setOrientationLocked(false);
        //バーコードリーダーの起動
        integrator.initiateScan();

    }

    //QRコードから読み取った結果の取得
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null) {
            QRcodeData = (String)result.getContents();
            QRcodeResult.setText(QRcodeData);
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }

        //テストでグループIDを出力
        final TextView testtxt = (TextView)findViewById(R.id.result);

        //retrofitの処理
        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
        //interfaceから実装を取得
        final JoinGroupRest joinGroupService = retrofit.create(JoinGroupRest.class);

        //* 必要値取得 *//
        //現在のグループ情報を格納しているものからuid,tokenを取得
                Cosmos app = (Cosmos) getApplication();
        //元となるgId,uid,tokenを取得完了
//                String gId = (String)result.getContents();
                String uId=app.getuId();
                String token=app.getToken();

        String gId="df6cddf2-7aff-4601-9ba7-d32bdc5d7e75";
//        String uId="dnjewvhfgoirae";
//        String token="dnjewvhoidgfrae";
        //API呼び出しのための値入力
        Call<JoinGroupResponse> call = joinGroupService.JoinGroup(gId, uId, token);

        //サーバからデータ受け取り
        call.enqueue(new Callback<JoinGroupResponse>() {

            //成功時
            @Override
            public void onResponse(Call<JoinGroupResponse> call, Response<JoinGroupResponse> response) {
                if (response.isSuccessful()) {
                    List<User> listMembers= response.body().getListMembers();
                    int s = listMembers.size();
//                    for(int i = 0; i < s; i++){
//                        Log.d("debug3", String.valueOf(listMembers.get(i)));
//                    }
                    Cosmos app = (Cosmos) getApplication();
                    //test
//                            System.out.println(result.uId);
//                            System.out.println(result.name);
//                            System.out.println(result.uri);
//                            System.out.println(result.token);
//                            System.out.println(result.iconUri);
//                            System.out.println(result.pw);

                    //ここで成功の処理を記述
                    testtxt.setText("成功");

                    finish();

                } else {
                    //onFailureでキャッチできないエラー用
                    //ここでエラーの処理を記述
                    testtxt.setText("失敗");

                }
            }


            //失敗時
            @Override
            public void onFailure(Call<JoinGroupResponse> call, Throwable t) {
                t.printStackTrace();
                Toast.makeText(QRcodeReadingActivity.this,
                        "アカウント作成失敗",Toast.LENGTH_SHORT);
            }
        });
    }
}