diff --git a/app/build.gradle b/app/build.gradle index dbf7c23..4260cab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,4 +32,7 @@ //QRコードリーダー 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.+' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26cd441..694e8e9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,23 +4,26 @@ package="com.example.cosmosclient"> - - + + + + + android:label="IDでグループに入る" /> @@ -31,9 +34,9 @@ - - + @@ -41,12 +44,16 @@ - + + - + android:theme="@style/AppTheme.NoActionBar" /> + - + android:theme="@style/AppTheme.NoActionBar"> \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java index 63fd1cc..632820b 100644 --- a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java +++ b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java @@ -4,24 +4,17 @@ import com.example.cosmosclient.entities.Group; -import java.util.ArrayList; -import java.util.List; - public class Cosmos extends Application { - //token処理 - private List token; + private String token=null; private Group curGroup=null; + private String uId=null; - public Cosmos(){ - this.token = new ArrayList(); - } - - public void setToken(List token){ + //token処理 + public void setToken(String token){ this.token = token; } - - public List getToken(){ - return new ArrayList(token); + public String getToken(){ + return token; } //Group処理 @@ -32,5 +25,11 @@ return curGroup; } - + //uId処理 + public void setuId(String uId){ + this.uId = uId; + } + public String getuId(){ + return uId; + } } diff --git a/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java b/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java index 269b78a..8600404 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java +++ b/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java @@ -1,7 +1,6 @@ package com.example.cosmosclient.entities; -import java.util.List; - public class SigninResponse { - public List token; + public String token; + public String uId; } diff --git a/app/src/main/java/com/example/cosmosclient/entities/SignupResponse.java b/app/src/main/java/com/example/cosmosclient/entities/SignupResponse.java index 4a52150..712e2fd 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/SignupResponse.java +++ b/app/src/main/java/com/example/cosmosclient/entities/SignupResponse.java @@ -1,13 +1,10 @@ package com.example.cosmosclient.entities; -import java.util.List; - public class SignupResponse { public String uId; public String name; - public String pw; public String uri; - public List token; + public String token; public String iconUri; public boolean login; diff --git a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java index 6635b43..52bbefd 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java @@ -1,4 +1,14 @@ package com.example.cosmosclient.resources; +import com.example.cosmosclient.entities.Group; + +import retrofit2.Call; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + public interface GroupsRest { + @POST("groups") + @FormUrlEncoded + Call createGroup(@Field("name") String name,@Field("uId") String uId,@Field("token") String token); } diff --git a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java index d4ddb3e..205b4a2 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java @@ -12,10 +12,10 @@ public interface UsersRest { @POST("users/{uId}/login") - Call loginList(@Path("uId") String uId, @Query("pw") String pw); + @FormUrlEncoded + Call login(@Path("uId") String uId,@Field("pw") String pw); @POST("users") @FormUrlEncoded Call createUser(@Field("name") String name, @Field("pw") String pw, @Field("icon-image") String icon_image); - } diff --git a/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java b/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java new file mode 100644 index 0000000..d83bf9e --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java @@ -0,0 +1,93 @@ +package com.example.cosmosclient.views; + +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.Toast; + +import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.resources.GroupsRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class CreateGroupActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_make_group); + + //各種IDを取得 + final EditText groupNameText = findViewById(R.id.groupNameText); + Button createGroupButton = findViewById(R.id.createGroupButton); + final String uId,token; + + //グループ作成に必要な情報の取得 + Cosmos app = (Cosmos) getApplication(); + uId = app.getuId(); + ////サインアップでトークンが返ってきてないため一時コメントアウト + //token = app.getToken(); + token="abcdef"; + + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + final GroupsRest createGroupService = retrofit.create(GroupsRest.class); + + //グループ作成ボタン処理 + createGroupButton.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view){ + try { + 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()); +// System.out.println(result.getName()); +// 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); + } + }); + }catch(Exception e){ + e.printStackTrace(); + } + } + }); + } +} 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 2cbe6b6..7214bb7 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java @@ -58,7 +58,7 @@ @Override public void onClick(View v) { //APIに値を送信 - Call call = signinService.loginList(UserIdText.getText().toString(), PasswordText.getText().toString()); + Call call = signinService.login(UserIdText.getText().toString(), PasswordText.getText().toString()); //サーバからのレスポンス call.enqueue(new Callback() { @@ -71,7 +71,9 @@ //app/Cosmosに情報保存 Cosmos app = (Cosmos)getApplication(); app.setToken(result.token); + app.setuId(result.uId); + //画面遷移 Intent intent = new Intent(getApplication(), GroupListActivity.class); startActivity(intent); Toast.makeText(SigninActivity.this, 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 e130633..fe6d66f 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -1,6 +1,8 @@ package com.example.cosmosclient.views; + import android.content.Intent; +import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; @@ -8,12 +10,15 @@ 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; @@ -27,6 +32,7 @@ private boolean pwEnable; private boolean cpwEnable; private Button MakeAccountButton; + private ImageView iconChoice; @Override protected void onCreate(Bundle savedInstanceState) { @@ -47,6 +53,8 @@ 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)); @@ -57,14 +65,14 @@ // MakeAccountButton.setEnabled(false); //Make Accountボタンの処理 - MakeAccountButton.setOnClickListener(new View.OnClickListener(){ + MakeAccountButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View v){ + public void onClick(View v) { String pw = PasswordText.getText().toString(); String confirmPw = ConfirmPasswordText.getText().toString(); //パスワードと確認パスワードが一致していない際の処理 - if(!pw.equals(confirmPw)){ + if (!pw.equals(confirmPw)) { PasswordText.setError("入力されたパスワードが一致しません"); ConfirmPasswordText.setError("入力されたパスワードが一致しません"); return; @@ -72,7 +80,7 @@ //API呼び出しのための値入力 Call call = signupService.createUser(NameText.getText().toString(), - PasswordText.getText().toString(),"https://yumenavi.info/live/2018/photo/k/s015980019.jpg"); + PasswordText.getText().toString(), "https://yumenavi.info/live/2018/photo/k/s015980019.jpg"); //サーバからデータ受け取り call.enqueue(new Callback() { @@ -82,8 +90,10 @@ if (response.isSuccessful()) { SignupResponse result = response.body(); - Cosmos app = (Cosmos)getApplication(); + //app/Cosmosに情報保存 + Cosmos app = (Cosmos) getApplication(); app.setToken(result.token); + app.setuId(result.uId); Intent intent = new Intent(getApplication(), GroupListActivity.class); @@ -97,13 +107,13 @@ startActivity(intent); Toast.makeText(SignupActivity.this, - "アカウントを作成しました",Toast.LENGTH_SHORT); + "アカウントを作成しました", Toast.LENGTH_SHORT).show(); finish(); - }else{ + } else { //onFailureでキャッチできないエラー用 Toast.makeText(SignupActivity.this, - "アカウント作成失敗",Toast.LENGTH_SHORT); + "通信エラー", Toast.LENGTH_SHORT).show(); } } @@ -112,21 +122,46 @@ public void onFailure(Call call, Throwable t) { t.printStackTrace(); Toast.makeText(SignupActivity.this, - "アカウント作成失敗",Toast.LENGTH_SHORT); + "アカウント作成失敗", Toast.LENGTH_SHORT).show(); } }); } }); //サインイン画面への遷移処理 - LoginButton.setOnClickListener(new View.OnClickListener(){ + LoginButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View v){ - Intent intent = new Intent(getApplication(),SigninActivity.class); + 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) { + CropImage.activity() + .setAspectRatio(1,1) + .setGuidelines(CropImageView.Guidelines.ON) + .start(SignupActivity.this); + } + }); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent 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(); + } + } } //入力欄監視処理内容 @@ -171,7 +206,7 @@ if(nameEnable && pwEnable && cpwEnable){ MakeAccountButton.setEnabled(true); }else{ - MakeAccountButton.setEnabled(false); + MakeAccountButton.setEnabled(false); } } } diff --git a/app/src/main/res/drawable/borderless_button.xml b/app/src/main/res/drawable/borderless_button.xml index 7a4684f..a8b409b 100644 --- a/app/src/main/res/drawable/borderless_button.xml +++ b/app/src/main/res/drawable/borderless_button.xml @@ -1,14 +1,4 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_make_group.xml b/app/src/main/res/layout/activity_make_group.xml new file mode 100644 index 0000000..0762055 --- /dev/null +++ b/app/src/main/res/layout/activity_make_group.xml @@ -0,0 +1,55 @@ + + + + + + + +