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(); //app/Cosmosに情報保存 Cosmos app = (Cosmos) getApplication(); app.setToken(result.token); app.setuId(result.uId); 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); } } } }