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 LoginActivity extends AppCompatActivity { private Retrofit retrofit; private AccountsRest AccountsRest; private Nemophila nemophila; //座標指定 private double defaultLat = 38.74; private double defaultLong = 137.26; private float defaultZoom = 5f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); //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(LoginActivity.this,MapsActivity.class); startActivity(intent); 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); //Loginボタンを押したとき findViewById(R.id.LoginButton).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //IDとpwの入力 EditText edituid = (EditText) findViewById(R.id.editTextUserID); String uid = edituid.getText().toString(); EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword); String pw = editpw.getText().toString(); // 通信 Call<AccountJson> call = AccountsRest.getAccounts(uid,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(LoginActivity.this,MapsActivity.class); startActivity(intent); } else { System.out.println("通信可能:changeBelongsAndMaster: " + response.code()); if (response.code() == 500){ ((TextView) findViewById(R.id.textView)).setText("Invalid UserID or Password"); } else if (response.code() == 404){ ((TextView) findViewById(R.id.textView)).setText("Login failed. Please enter the correct credentials."); } } } @Override public void onFailure(Call<AccountJson> call, Throwable t) { System.out.println("通信失敗:changeBelongsAndMaster"); System.out.println(t); } }); } }); //SignUpボタンを押したとき findViewById(R.id.SignUp).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LoginActivity.this,SignUpActivity.class); startActivity(intent); } }); //ForgotPasswordボタンを押したとき(処理未記入) findViewById(R.id.ForgotPW).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Intent intent = new Intent(LoginActivity.this, ChangePwActivity.class); // startActivity(intent); } }); } }