package com.example.nemophila; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.nemophila.entities.Account; import com.example.nemophila.entities.AccountJson; import com.example.nemophila.resources.AccountsRest; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; @JsonIgnoreProperties(ignoreUnknown=true) public class SignUpActivity extends AppCompatActivity{ private Retrofit retrofit; private AccountsRest AccountsRest; private Nemophila nemophila; //座標指定 private double defaultLat = 34.74; private double defaultLong = 135.26; private float defaultZoom = 15f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_up); //Nemophilaと連携 nemophila = (Nemophila) this.getApplication(); //Nemophilaにtokenとuidがある場合サインアップ画面をスキップ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){ //座標指定(仮) nemophila.setCameraLatitude(defaultLat); nemophila.setCameraLongitude(defaultLong); nemophila.setZoom(defaultZoom); Intent intent = new Intent(SignUpActivity.this,MapsActivity.class); startActivity(intent); System.out.println("サインアップ処理をスキップ"); return; } //通信の初期化 this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/") .addConverterFactory(JacksonConverterFactory.create()) .build(); this.AccountsRest = retrofit.create(AccountsRest.class); //アカウント新規製作 findViewById(R.id.SignUpButton).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Nameとpwを入力 EditText editname = (EditText) findViewById(R.id.editTextTextUserName); String name = editname.getText().toString().trim(); EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword); String pw = editpw.getText().toString().trim(); if (!name.isEmpty() && !pw.isEmpty() && !name.trim().equals("") && !pw.trim().equals("")) { // 通信 Call<AccountJson> call = AccountsRest.createAccounts(name, pw); call.enqueue(new Callback<AccountJson>() { @Override public void onResponse(Call<AccountJson> call, Response<AccountJson> response) { if (response.isSuccessful()) { System.out.println("通信成功:changeBelongsAndMaster"); //nemophila(自端末)にname,id,tokenを記憶 nemophila.setName(response.body().getName()); nemophila.setUid(response.body().getId()); nemophila.setToken(response.body().getToken()); //座標指定(仮) nemophila.setCameraLatitude(defaultLat); nemophila.setCameraLongitude(defaultLong); nemophila.setZoom(defaultZoom); //mainに画面遷移 Intent intent = new Intent(SignUpActivity.this, MapsActivity.class); startActivity(intent); } else { System.out.println("通信可能:changeBelongsAndMaster: " + response.code()); if (response.code() == 500) { ((TextView) findViewById(R.id.textView)).setText("The UserName you gave is already in use."); } else if (response.code() == 404) { ((TextView) findViewById(R.id.textView)).setText("SignUp failed. Please enter the correct credentials."); } } } @Override public void onFailure(Call<AccountJson> call, Throwable t) { System.out.println("通信失敗:changeBelongsAndMaster"); System.out.println(t); } }); } } }); //Login画面に遷移 findViewById(R.id.LoginTrans).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(SignUpActivity.this,LoginActivity.class); startActivity(intent); } }); } }