Newer
Older
CosmosClient / app / src / main / java / com / example / cosmosclient / views / SignupActivity.java
k-morimoto on 20 Jun 2019 10 KB 画像トリミング処理追加
package com.example.cosmosclient.views;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.Image;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.example.cosmosclient.R;
import com.example.cosmosclient.app.Cosmos;
import com.example.cosmosclient.entities.SignupResponse;
import com.example.cosmosclient.resources.UsersRest;
import com.theartofdev.edmodo.cropper.CropImage;
import com.theartofdev.edmodo.cropper.CropImageView;


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

public class SignupActivity extends AppCompatActivity{
    private boolean nameEnable;
    private boolean pwEnable;
    private boolean cpwEnable;
    private Button MakeAccountButton;
    private ImageView iconChoice;
    private static final int REQUEST_GALLERY = 1000;
    private static final int REQUEST_CROP = 1001;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);

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

        //各種idを取得
        Button LoginButton = findViewById(R.id.LoginButton);
        MakeAccountButton = findViewById(R.id.MakeAccountButton);
        final EditText NameText = findViewById(R.id.NameText);
        final EditText PasswordText = findViewById(R.id.PasswordText);
        final EditText ConfirmPasswordText = findViewById(R.id.ConfirmPasswordText);
        iconChoice = findViewById(R.id.choiceImage);

//
//        //入力欄監視
//        NameText.addTextChangedListener(new GenericTextWatcher(NameText));
//        PasswordText.addTextChangedListener(new GenericTextWatcher(PasswordText));
//        ConfirmPasswordText.addTextChangedListener(new GenericTextWatcher(ConfirmPasswordText));
//
//        //アカウント登録ボタン無効化
//        MakeAccountButton.setEnabled(false);

        //Make Accountボタンの処理
        MakeAccountButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String pw = PasswordText.getText().toString();
                String confirmPw = ConfirmPasswordText.getText().toString();

                //パスワードと確認パスワードが一致していない際の処理
                if (!pw.equals(confirmPw)) {
                    PasswordText.setError("入力されたパスワードが一致しません");
                    ConfirmPasswordText.setError("入力されたパスワードが一致しません");
                    return;
                }

                //API呼び出しのための値入力
                Call<SignupResponse> call = signupService.createUser(NameText.getText().toString(),
                        PasswordText.getText().toString(), "https://yumenavi.info/live/2018/photo/k/s015980019.jpg");

                //サーバからデータ受け取り
                call.enqueue(new Callback<SignupResponse>() {
                    //成功時
                    @Override
                    public void onResponse(Call<SignupResponse> call, Response<SignupResponse> response) {
                        if (response.isSuccessful()) {
                            SignupResponse result = response.body();

                            Cosmos app = (Cosmos) getApplication();
                            app.setToken(result.token);

                            Intent intent = new Intent(getApplication(), GroupListActivity.class);

                            //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);

                            startActivity(intent);
                            Toast.makeText(SignupActivity.this,
                                    "アカウントを作成しました", Toast.LENGTH_SHORT);
                            finish();

                        } else {
                            //onFailureでキャッチできないエラー用
                            Toast.makeText(SignupActivity.this,
                                    "アカウント作成失敗", Toast.LENGTH_SHORT);
                        }
                    }

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

        //サインイン画面への遷移処理
        LoginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplication(), SigninActivity.class);
                startActivity(intent);
                finish();
            }
        });

        //アイコン選択
        iconChoice.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                Intent intent = new Intent();
//                intent.setType("image/*");
//                intent.setAction(Intent.ACTION_GET_CONTENT);
//                startActivityForResult(intent, REQUEST_GALLERY);
                CropImage.activity()
                        .setAspectRatio(1,1)
                        .setGuidelines(CropImageView.Guidelines.ON)
                        .start(SignupActivity.this);


            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//
//        //アルバムの結果をここで受け、oginotihiroへ渡します。
//        if (requestCode == REQUEST_GALLERY && resultCode == RESULT_OK) {
//            try {
//                //アルバムで選ばれたファイル(original_uri)を取得して、oginotihiroへ渡します
//                Uri original_uri = data.getData();
//                Intent intent = new Intent(this, oginotihiro.class);
//                intent.putExtra("original_uri",original_uri.toString());
//                startActivityForResult(intent, REQUEST_CROP);
//            } catch (Exception e) {
//            }
//        }
//
//        //oginotihiroからの結果(saved_uri)をここで受けとります。
//        if (requestCode == REQUEST_CROP && resultCode == RESULT_OK) {
//            Bundle bundle = data.getExtras();
//            Uri saved_uri = (Uri)bundle.get("saved_uri");
//            //saved_uriが、クロップされた写真の保存先のパスになります。
//            Log.d("saved_uri",saved_uri+"");
//
//            iconChoice.setImageURI(saved_uri);
////        }
//        switch (requestCode) {
//            case REQUEST_GALLERY:
//                if (resultCode != RESULT_OK) return;
//                Uri uri = data.getData(); // 選ばれた写真のUri
//                Intent intent = new Intent("com.android.camera.action.CROP");
//                intent.setData(uri);
//                intent.putExtra("outputX", 200);
//                intent.putExtra("outputY", 200);
//                intent.putExtra("aspectX", 1);
//                intent.putExtra("aspectY", 1);
//                intent.putExtra("scale", true);
//                intent.putExtra("return-data", true);
//                startActivityForResult(intent, REQUEST_CROP);
//                break;
//            case REQUEST_CROP:
//                if (resultCode != RESULT_OK) return;
//                Bitmap bitmap = data.getExtras().getParcelable("data");
//                iconChoice.setImageBitmap(bitmap);
//                //Bitmap bitmap = data.getExtras().getParcelable("data");
//        }
        if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
            CropImage.ActivityResult result = CropImage.getActivityResult(data);
            if (resultCode == RESULT_OK) {
                Uri resultUri = result.getUri();
                iconChoice.setImageURI(resultUri);
            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
                Exception error = result.getError();
            }
        }


    }

    //入力欄監視処理内容
    private class GenericTextWatcher implements TextWatcher{
        private View view;

        private GenericTextWatcher(View view){
            this.view = view;
        }

        @Override
        public  void beforeTextChanged(CharSequence s, int start, int count,int after){/*記述不要*/};
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count){/*記述不要*/};

        @Override
        public void afterTextChanged(Editable s){
            switch(view.getId()) {
                case R.id.NameText:
                    if (s.length() > 0) {
                        nameEnable = true;
                    } else {
                        nameEnable = false;
                    }
                    break;
                case R.id.PasswordText:
                    if(s.length()>0){
                        pwEnable=true;
                    }else{
                        pwEnable=false;
                    }
                    break;
                case R.id.ConfirmPasswordText:
                    if(s.length()>0){
                        cpwEnable=true;
                    }else{
                        cpwEnable=false;
                    }
                    break;
            }
            //ボタン有効&無効
            if(nameEnable && pwEnable && cpwEnable){
                MakeAccountButton.setEnabled(true);
            }else{
              MakeAccountButton.setEnabled(false);
            }
        }
    }

}