diff --git a/app/build.gradle b/app/build.gradle index 274eb52..8a5b3fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,6 @@ implementation 'com.journeyapps:zxing-android-embedded:3.6.0' implementation 'com.android.support:design:28.0.0' //cropView - implementation 'com.oginotihiro:cropview:1.0.0' api 'com.theartofdev.edmodo:android-image-cropper:2.7.+' implementation project(path: ':dynamicgrid') } diff --git a/app/src/main/java/com/example/cosmosclient/entities/JoinGroupResponse.java b/app/src/main/java/com/example/cosmosclient/entities/JoinGroupResponse.java new file mode 100644 index 0000000..b98a746 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/JoinGroupResponse.java @@ -0,0 +1,11 @@ +package com.example.cosmosclient.entities; + +import java.util.List; + +public class JoinGroupResponse { + public String gId; + public String uId; + public String token; + public String uri; + +} diff --git a/app/src/main/java/com/example/cosmosclient/resources/JoinGroupRest.java b/app/src/main/java/com/example/cosmosclient/resources/JoinGroupRest.java new file mode 100644 index 0000000..8472bfb --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/resources/JoinGroupRest.java @@ -0,0 +1,18 @@ +package com.example.cosmosclient.resources; + +import com.example.cosmosclient.entities.JoinGroupResponse; +import com.example.cosmosclient.entities.SigninResponse; + +import retrofit2.Call; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface JoinGroupRest { + @POST("groups/{gId}/members") + @FormUrlEncoded + Call JoinGroup(@Path("gId") String gId, @Field("uId ") String uId , @Field("token ") String token); + +} diff --git a/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java b/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java index d83bf9e..49e3d17 100644 --- a/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java @@ -1,10 +1,15 @@ package com.example.cosmosclient.views; +import android.media.Image; +import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.ImageButton; import android.widget.Toast; import com.example.cosmosclient.R; @@ -19,6 +24,7 @@ import retrofit2.converter.jackson.JacksonConverterFactory; public class CreateGroupActivity extends AppCompatActivity { + Button createGroupButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -27,9 +33,14 @@ //各種IDを取得 final EditText groupNameText = findViewById(R.id.groupNameText); - Button createGroupButton = findViewById(R.id.createGroupButton); + createGroupButton = findViewById(R.id.createGroupButton); final String uId,token; + //ボタン有効化&監視 + createGroupButton.setEnabled(false); + createGroupButton.setBackgroundColor(0xaa808080); + groupNameText.addTextChangedListener(new CreateGroupActivity.GenericTextWatcher(groupNameText)); + //グループ作成に必要な情報の取得 Cosmos app = (Cosmos) getApplication(); uId = app.getuId(); @@ -49,15 +60,24 @@ createGroupButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ - try { - Call createGroup = createGroupService.createGroup(groupNameText.getText().toString(), uId, token); + //ボタン連打防止 + createGroupButton.setEnabled(false); + createGroupButton.setBackgroundColor(0xaa808080); + new Handler().postDelayed(new Runnable() { + public void run() { + createGroupButton.setEnabled(true); + createGroupButton.setBackgroundColor(0xaa009688); + } + }, 1000L); - createGroup.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) { - //成功時 - Group result = response.body(); + Call createGroup = createGroupService.createGroup(groupNameText.getText().toString(), uId, token); + + createGroup.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + //成功時 + Group result = response.body(); // //確認用 // System.out.println(result.getgId()); @@ -65,29 +85,51 @@ // System.out.println(result.getRequests()); // System.out.println(result.getUri()); - Toast.makeText(CreateGroupActivity.this, - "グループを作成しました", Toast.LENGTH_SHORT).show(); - finish(); - } else { - //onFailureでキャッチできない用のエラー - System.out.println(""); - Toast.makeText(CreateGroupActivity.this, - "通信エラー",Toast.LENGTH_SHORT).show(); - } - } - - @Override - public void onFailure(Call call, Throwable t) { - //失敗時 - t.printStackTrace(); Toast.makeText(CreateGroupActivity.this, - "グループ作成失敗",Toast.LENGTH_SHORT); + "グループを作成しました", Toast.LENGTH_SHORT).show(); + finish(); + } else { + //onFailureでキャッチできない用のエラー + System.out.println(""); + Toast.makeText(CreateGroupActivity.this, + "通信エラー",Toast.LENGTH_SHORT).show(); } - }); - }catch(Exception e){ - e.printStackTrace(); - } + } + + @Override + public void onFailure(Call call, Throwable t) { + //失敗時 + t.printStackTrace(); + Toast.makeText(CreateGroupActivity.this, + "グループ作成失敗",Toast.LENGTH_SHORT).show(); + } + }); } }); } -} + //テキスト欄監視 + 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){ + //ボタン有効&無効 + if(s.length()>0){ + createGroupButton.setEnabled(true); + createGroupButton.setBackgroundColor(0xaa009688); + }else{ + createGroupButton.setEnabled(false); + createGroupButton.setBackgroundColor(0xaa808080); + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java index 18c332e..f02fa63 100644 --- a/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java @@ -7,6 +7,8 @@ import android.widget.ImageView; import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.journeyapps.barcodescanner.BarcodeEncoder; @@ -17,7 +19,13 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_qr); - //QRコード化する文字列 +// //現在のグループ情報を格納しているものからgIdを取得 +// Cosmos app = (Cosmos) getApplication(); +// Group curentGroup = app.getCurentGroup(); +// //元となるgIdを取得完了 +// String data = curentGroup.getgId(); + + //テスト値 String data = "http://researchers.adm.konan-u.ac.jp/html/130_ja.html"; //QRコード画像の大きさを指定(pixel) int size = 500; diff --git a/app/src/main/java/com/example/cosmosclient/views/JoinGroupActionsActivity.java b/app/src/main/java/com/example/cosmosclient/views/JoinGroupActionsActivity.java index 321bf48..ecde6ec 100644 --- a/app/src/main/java/com/example/cosmosclient/views/JoinGroupActionsActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/JoinGroupActionsActivity.java @@ -15,14 +15,12 @@ private static final String[] scenes = { "QRコードでグループに入る", "IDでグループに入る", - "メールでグループに入る" }; // ちょっと冗長的ですが分かり易くするために private static final int[] photos = { R.drawable.camera_image, R.drawable.search_image, - R.drawable.mail_image, }; @Override @@ -57,8 +55,6 @@ intent = new Intent(this.getApplicationContext(), QRcodeReadingActivity.class); }else if(selectedText.contains("ID")==true){ intent = new Intent(this.getApplicationContext(), JoinGroupByIDActivity.class); - }else{ - intent = new Intent(this.getApplicationContext(), QRcodeReadingActivity.class); } // Intent intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); diff --git a/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java b/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java index b861a8e..df0f054 100644 --- a/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java @@ -1,13 +1,25 @@ package com.example.cosmosclient.views; +import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.JoinGroupResponse; +import com.example.cosmosclient.resources.JoinGroupRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; public class JoinGroupByIDActivity extends AppCompatActivity { private String GroupID=null; @@ -16,7 +28,7 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_join_group_by_id); //テストでグループIDを出力 - final TextView result = (TextView)findViewById(R.id.IDresult); + final TextView test = (TextView)findViewById(R.id.IDresult); //buttonを取得 Button btn = (Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @@ -25,7 +37,73 @@ //ボタンを押されると入力されたグループIDを取得 EditText inputGroupID = (EditText)findViewById(R.id.inputGroupID); GroupID = inputGroupID.getText().toString(); - result.setText(GroupID); + test.setText(GroupID); + //retrofitの処理 + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + JoinGroupRest joinGroupService = retrofit.create(JoinGroupRest.class); + + + //* 必要値取得 *// + //現在のグループ情報を格納しているものからuid,tokenを取得 +// Cosmos app = (Cosmos) getApplication(); + //元となるgId,uid,tokenを取得完了 +// String gId = GroupID; +// String uId=app.getuId(); +// String token=app.getToken(); + + //テスト値 + String gId="qwer"; + String uId="asdf"; + String token="sggh"; + //API呼び出しのための値入力 + Call call = joinGroupService.JoinGroup(gId, uId, token); + + //サーバからデータ受け取り + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { +// JoinGroupResponse result = response.body(); + test.setText("成功"); + Cosmos app = (Cosmos) getApplication(); +// Intent intent = new Intent(getApplication(), GroupListActivity.class); + + //test +// System.out.println(result.gId); +// 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); + + //ここで成功の処理を記述 +// finish(); + + } else { + //onFailureでキャッチできないエラー用 + //ここでエラーの処理を記述 + test.setText("失敗"); + + } + } + + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(JoinGroupByIDActivity.this, + "アカウント作成失敗",Toast.LENGTH_SHORT); + test.setText("超失敗"); + + } + }); } }); } diff --git a/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java b/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java index af17d80..c49cee9 100644 --- a/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java @@ -5,16 +5,28 @@ import android.os.Bundle; import android.util.Log; import android.view.View; +import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.JoinGroupResponse; +import com.example.cosmosclient.resources.JoinGroupRest; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; import com.journeyapps.barcodescanner.CaptureActivity; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + public class QRcodeReadingActivity extends CaptureActivity { public String QRcodeData = null; TextView QRcodeResult; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -34,12 +46,78 @@ //QRコードから読み取った結果の取得 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); + final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { QRcodeData = (String)result.getContents(); QRcodeResult.setText(QRcodeData); } else { super.onActivityResult(requestCode, resultCode, data); } + + //テストでグループIDを出力 + final TextView testtxt = (TextView)findViewById(R.id.result); + + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + final JoinGroupRest joinGroupService = retrofit.create(JoinGroupRest.class); + + //* 必要値取得 *// + //現在のグループ情報を格納しているものからuid,tokenを取得 +// Cosmos app = (Cosmos) getApplication(); + //元となるgId,uid,tokenを取得完了 +// String gId = (String)result.getContents(); +// String uId=app.getuId(); +// String token=app.getToken(); + + String gId="dnjewvhoirae"; + String uId="dnjewvhfgoirae"; + String token="dnjewvhoidgfrae"; + //API呼び出しのための値入力 + Call call = joinGroupService.JoinGroup(gId, uId, token); + + //サーバからデータ受け取り + call.enqueue(new Callback() { + + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + JoinGroupResponse result = response.body(); + + Cosmos app = (Cosmos) getApplication(); + //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); + + //ここで成功の処理を記述 + testtxt.setText("成功"); + + finish(); + + } else { + //onFailureでキャッチできないエラー用 + //ここでエラーの処理を記述 + testtxt.setText("失敗"); + + } + } + + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(QRcodeReadingActivity.this, + "アカウント作成失敗",Toast.LENGTH_SHORT); + } + }); } } diff --git a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java index 7214bb7..799fec0 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java @@ -1,6 +1,7 @@ package com.example.cosmosclient.views; import android.content.Intent; +import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; @@ -57,6 +58,14 @@ SigninButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + //ボタン連打防止 + SigninButton.setEnabled(false); + new Handler().postDelayed(new Runnable() { + public void run() { + SigninButton.setEnabled(true); + } + }, 1000L); + //APIに値を送信 Call call = signinService.login(UserIdText.getText().toString(), PasswordText.getText().toString()); diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java index fe6d66f..da8b756 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -3,6 +3,7 @@ import android.content.Intent; import android.net.Uri; +import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; @@ -68,6 +69,15 @@ MakeAccountButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + //ボタン連打防止 + MakeAccountButton.setEnabled(false); + new Handler().postDelayed(new Runnable() { + public void run() { + MakeAccountButton.setEnabled(true); + } + }, 1000L); + + //パスワード文字列比較のための変数宣言 String pw = PasswordText.getText().toString(); String confirmPw = ConfirmPasswordText.getText().toString(); diff --git a/app/src/main/res/layout/activity_qrcode_reading.xml b/app/src/main/res/layout/activity_qrcode_reading.xml index 3a7780e..5fb778a 100644 --- a/app/src/main/res/layout/activity_qrcode_reading.xml +++ b/app/src/main/res/layout/activity_qrcode_reading.xml @@ -17,4 +17,17 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + \ No newline at end of file