package com.example.nemophila; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import com.example.nemophila.entities.AccountJson; import com.example.nemophila.resources.AccountsRest; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; 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 final ExecutorService executor = Executors.newSingleThreadExecutor(); 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_sign_up); //Nemophilaと連携 nemophila = (Nemophila) this.getApplication(); //Nemophilaにtokenとuidがある場合サインアップ画面をスキップ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){ getIcon("http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon" + nemophila.getUid() + ".jpg", false); 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に画面遷移 getIcon("http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg", true); } 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); } }); } private void getIcon(String urlString, boolean isDefault){ executor.execute(() -> { try{ URL url = new URL(urlString); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.connect(); InputStream is = con.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); nemophila.setIcon(bitmap); Intent intent = new Intent(SignUpActivity.this,MapsActivity.class); startActivity(intent); } catch (Exception e){ e.printStackTrace(); if(!isDefault) { getIcon("http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg", true); } else { Intent intent = new Intent(SignUpActivity.this,MapsActivity.class); startActivity(intent); } } }); } }