diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1de6c3b..f872505 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,23 +2,24 @@
-
+
+
+ android:label="グループメンバー" />
@@ -71,13 +72,19 @@
-
+ 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 632820b..ede712b 100644
--- a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java
+++ b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java
@@ -2,34 +2,67 @@
import android.app.Application;
+import com.example.cosmosclient.entities.AreaInformation;
import com.example.cosmosclient.entities.Group;
+import com.example.cosmosclient.entities.Location;
+
+import java.util.HashMap;
+
+import java.util.HashMap;
public class Cosmos extends Application {
private String token=null;
private Group curGroup=null;
+ private HashMap groups = new HashMap<>();
private String uId=null;
+ private HashMap areaInfo = new HashMap<>();
//token処理
public void setToken(String token){
this.token = token;
}
+
public String getToken(){
return token;
}
- //Group処理
+ //currentGroup処理
public void setCurrentGroup(Group g){
- curGroup = g;
+ setGroup(g);
+ curGroup = groups.get(g.getgId());
}
+
public Group getCurentGroup(){
return curGroup;
}
+ //Group処理
+ public void setGroup(Group g) {
+ if (!groups.containsKey(g.getgId())) {
+ String newGid = g.getgId();
+ groups.put(newGid, g);
+ }
+ }
+
+ public Group getGroup(String gId) {
+ return groups.get(gId);
+ }
+
//uId処理
public void setuId(String uId){
this.uId = uId;
}
+
public String getuId(){
return uId;
}
+
+ //areaInfo処理
+ public void setAreaInfo(int areaId, AreaInformation AreaInfo){
+ this.areaInfo.put(areaId,AreaInfo);
+ }
+ public AreaInformation getAreaInfo(int areaId){
+ return areaInfo.get(areaId);
+ }
+
}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java b/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java
new file mode 100644
index 0000000..4a581ac
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java
@@ -0,0 +1,32 @@
+package com.example.cosmosclient.entities;
+
+import java.sql.Time;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class AreaInformation {
+ private Location location = new Location();
+ private HashMap> feature = new HashMap<>();
+ private Time lastUpdated;
+
+ public void setLocation(Location location){
+ this.location = location;
+ }
+ public Location getLocation(){
+ return this.location;
+ }
+
+ public void setFeature(HashMap> feature) {
+ this.feature = feature;
+ }
+ public HashMap> getFeature() {
+ return feature;
+ }
+
+ public void setLastUpdated(Time lastUpdated) {
+ this.lastUpdated = lastUpdated;
+ }
+ public Time getLastUpdated() {
+ return lastUpdated;
+ }
+}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/Feature.java b/app/src/main/java/com/example/cosmosclient/entities/Feature.java
new file mode 100644
index 0000000..63c3374
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/entities/Feature.java
@@ -0,0 +1,28 @@
+package com.example.cosmosclient.entities;
+
+public class Feature {
+ private String name;
+ private int code;
+ private Location location = new Location();
+
+ public void setName(String name){
+ this.name = name;
+ }
+ public String getName(){
+ return this.name;
+ }
+
+ public void setCode(int code){
+ this.code = code;
+ }
+ public int getCode(){
+ return this.code;
+ }
+
+ public void setLocation(Location location){
+ this.location = location;
+ }
+ public Location getLocation(){
+ return this.location;
+ }
+}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/Group.java b/app/src/main/java/com/example/cosmosclient/entities/Group.java
index 9e728a3..1ee3c6d 100644
--- a/app/src/main/java/com/example/cosmosclient/entities/Group.java
+++ b/app/src/main/java/com/example/cosmosclient/entities/Group.java
@@ -1,5 +1,7 @@
package com.example.cosmosclient.entities;
+import com.example.cosmosclient.entities.jsons.GroupJson;
+
import java.util.ArrayList;
import java.util.Set;
@@ -9,8 +11,7 @@
/* Userどうするか
private ArrayList members;
*/
- //private ArrayList requests;
- private Set requests;
+ private RequestList requestList;
public Group(){
@@ -22,11 +23,17 @@
setName(name);
}
+ public Group(GroupJson groupJson){
+ setgId(groupJson.getgId());
+ setUri(groupJson.getUri());
+ setName(groupJson.getName());
+ }
+
public String getgId() {
return gId;
}
- private void setgId(String gId) {
+ public void setgId(String gId) {
this.gId = gId;
}
@@ -54,21 +61,12 @@
return name;
}
- public Set getRequests(){
- return requests;
+ public RequestList getRequestList(){
+ return requestList;
}
- public void setRequests(Set requests){
- this.requests = requests;
- }
-
- public void addRequests(Request request){
- requests.add(request);
- }
-
- public ArrayList getRequestsList(){
- ArrayList list = new ArrayList(getRequests());
- return list;
+ public void setRequestList(RequestList requestList){
+ this.requestList = requestList;
}
/*メンバー*/
@@ -85,7 +83,4 @@
// members.remove(members.indexOf(uid));
// return null;
//}
-
- /*リクエスト*/
-
}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/Location.java b/app/src/main/java/com/example/cosmosclient/entities/Location.java
new file mode 100644
index 0000000..113b555
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/entities/Location.java
@@ -0,0 +1,24 @@
+package com.example.cosmosclient.entities;
+
+public class Location {
+ private double latitude;
+ private double longitude;
+
+ public void setLatitude(double latitude) {
+ this.latitude = latitude;
+ }
+ public double getLatitude() {
+ return latitude;
+ }
+
+ public void setLongitude(double longitude) {
+ this.longitude = longitude;
+ }
+ public double getLongitude() {
+ return longitude;
+ }
+
+ public int hashCode(){
+ return (int)((latitude+90)/0.1)+(int)((longitude/0.1)*1800);
+ }
+}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/RequestList.java b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java
new file mode 100644
index 0000000..3a5b319
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java
@@ -0,0 +1,56 @@
+package com.example.cosmosclient.entities;
+
+import java.util.List;
+
+public class RequestList {
+ private List requests;
+
+ public RequestList() {
+ }
+
+ public RequestList(List requests) {
+ this.requests = requests;
+ }
+
+ public List getRequests() {
+ return requests;
+ }
+
+ public void setRequests(List requests) {
+ this.requests = requests;
+ }
+
+ public void addRequest(Request r) {
+ requests.add(r);
+ }
+
+// public void addRequests(List requests) {
+// requests.addAll(requests);
+// }
+
+ public Request getRequest(int index) {
+ return requests.get(index);
+ }
+
+ public void clearRequest() {
+ requests.clear();
+ }
+
+ public void removeRequest(int index) {
+ requests.remove(index);
+ }
+
+// public void removeRequests(List requests) {
+// requests.removeAll(requests);
+// }
+
+ public int getRequestCount() {
+ return requests.size();
+ }
+
+// @Override
+// public boolean equals(Object other) {
+// if (!(other instanceof Container)) return false;
+// return components.equals(((Container)other).components);
+// }
+}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/Requests.java b/app/src/main/java/com/example/cosmosclient/entities/Requests.java
deleted file mode 100644
index df14a88..0000000
--- a/app/src/main/java/com/example/cosmosclient/entities/Requests.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.example.cosmosclient.entities;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Requests {
- private List requests;
-
- public Requests() {
-
- }
-
- public Requests(List requests) {
- this.requests = requests;
- }
-
- public List getRequests() {
- return requests;
- }
-
- public void setRequests(List requests) {
- this.requests = requests;
- }
-
- public void addRequests(Request r) {
- requests.add(r);
- }
-
- public Request getRequest(int index) {
- return requests.get(index);
- }
-
- public void clearRequest() {
- requests.clear();
- }
-
- public void removeRequest(int index) {
- requests.remove(index);
- }
-
- public int getRequestCount() {
- return requests.size();
- }
-
-// @Override
-// public boolean equals(Object other) {
-// if (!(other instanceof Container)) return false;
-// return components.equals(((Container)other).components);
-// }
-}
diff --git a/app/src/main/java/com/example/cosmosclient/entities/UserResponse.java b/app/src/main/java/com/example/cosmosclient/entities/UserResponse.java
new file mode 100644
index 0000000..28cb151
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/entities/UserResponse.java
@@ -0,0 +1,6 @@
+package com.example.cosmosclient.entities;
+
+public class UserResponse {
+ public String name;
+ public String iconUri;
+}
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 1e62250..a424816 100644
--- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java
+++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java
@@ -1,16 +1,10 @@
package com.example.cosmosclient.resources;
-import com.example.cosmosclient.entities.AddRequestsResponse;
-import com.example.cosmosclient.entities.CreateGroupResponse;
-import com.example.cosmosclient.entities.Group;
import com.example.cosmosclient.entities.GroupListResponse;
+import com.example.cosmosclient.entities.CreateGroupResponse;
+import com.example.cosmosclient.entities.AddRequestsResponse;
import com.example.cosmosclient.entities.MemberListResponse;
-import com.example.cosmosclient.entities.Request;
-import com.example.cosmosclient.entities.Requests;
-import com.example.cosmosclient.entities.User;
-
-import java.util.ArrayList;
-import java.util.Date;
+import com.example.cosmosclient.entities.RequestList;
import retrofit2.Call;
import retrofit2.http.Field;
@@ -35,14 +29,14 @@
Call addRequests(@Path("gId") String gId, @Field("uId") String uId, @Field("product") String product, @Field("deadline") String deadline, @Field("location") int location, @Field("token") String token);
@GET("groups/{gId}/requests")
- Call getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail, @Query("quantity") int quantity);
+ Call getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail, @Query("quantity") int quantity);
@PUT("groups/{gId}/requests/{rId}")
@FormUrlEncoded
Call updateRequest(@Path("gId") String gId, @Path("rId") String rId, @Field("uId") String uId, @Field("product") String product, @Field("deadline") String deadline, @Field("location") int location, @Field("done") boolean done, @Field("token") String token);
// @GET("{gId}/requests/{rId}")
-// Call getRequestsDetailByGidAndRid(@Path("gid") String gid, @Path("rid") String rid, @Query("token") String token);
+// Call getRequestsDetailByGidAndRid(@Path("gid") String gid, @Path("rid") String rid, @Query("token") String token);
@GET("groups/{gId}/members")
Call getMemberListByGid(@Path("gId") String gId, @Query("token") String token);
diff --git a/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java b/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java
new file mode 100644
index 0000000..0d9a51c
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java
@@ -0,0 +1,17 @@
+package com.example.cosmosclient.resources;
+
+import com.example.cosmosclient.entities.Feature;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface ShopRest {
+
+ @GET("rest")
+ Call ShopRequest(@Query("longitude") double longitude,
+ @Query("latitude") double latitude,
+ @Query("longitudeRange") double longitudeRange,
+ @Query("latitudeRange") double latitudeRange,
+ @Query("shop") int shop);
+}
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 b05522c..55e6651 100644
--- a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java
+++ b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java
@@ -2,7 +2,7 @@
import com.example.cosmosclient.entities.SigninResponse;
import com.example.cosmosclient.entities.SignupResponse;
-import com.example.cosmosclient.entities.User;
+import com.example.cosmosclient.entities.UserResponse;
import retrofit2.Call;
import retrofit2.http.Field;
@@ -18,7 +18,7 @@
Call login(@Path("uId") String uId,@Field("pw") String pw);
@GET("users/{uId}")
- Call getName(@Path("uId") String uId, @Field("token") String token);
+ Call getName(@Path("uId") String uId, @Query("token") String token);
@POST("users")
@FormUrlEncoded
diff --git a/app/src/main/java/com/example/cosmosclient/services/CosomosBackgroundService.java b/app/src/main/java/com/example/cosmosclient/services/CosomosBackgroundService.java
new file mode 100644
index 0000000..28b1dcf
--- /dev/null
+++ b/app/src/main/java/com/example/cosmosclient/services/CosomosBackgroundService.java
@@ -0,0 +1,164 @@
+package com.example.cosmosclient.services;
+
+import android.Manifest;
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.LocationProvider;
+import android.os.Build;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.support.annotation.RequiresApi;
+import android.support.v4.app.ActivityCompat;
+import android.util.Log;
+
+import com.example.cosmosclient.R;
+
+
+public class CosomosBackgroundService extends IntentService implements LocationListener {
+ private Context context;
+ private LocationManager locationManager;
+ private static final int MinTime = 1000;/*最小時間間隔*/
+ private static final float MinDistance = 1;/*最小距離間隔*/
+
+ public CosomosBackgroundService() {
+ super("CosomosBackgroundService");
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// Log.d("debug", "onCreate");
+ context = getApplicationContext();
+ // LocationManager インスタンス生成
+ locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+
+// Log.d("debug", "onStartCommand");
+ int requestCode = 0;
+ String channelId = "default";
+ String title = context.getString(R.string.app_name);
+ PendingIntent pendingIntent =
+ PendingIntent.getActivity(context, requestCode,
+ intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ // ForegroundにするためNotificationが必要、Contextを設定
+ NotificationManager notificationManager =
+ (NotificationManager) context.
+ getSystemService(Context.NOTIFICATION_SERVICE);
+ // Notification Channel 設定
+ NotificationChannel channel = new NotificationChannel(
+ channelId, title, NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setDescription("Silent Notification");
+ // 通知音を消さないと毎回通知音が出てしまう
+ // この辺りの設定はcleanにしてから変更
+ channel.setSound(null, null);
+ // 通知ランプを消す
+ channel.enableLights(false);
+ channel.setLightColor(Color.BLUE);
+ // 通知バイブレーション無し
+ channel.enableVibration(false);
+ if (notificationManager != null) {
+ notificationManager.createNotificationChannel(channel);
+ Notification notification = new Notification.Builder(context, channelId)
+ .setContentTitle(title)
+ // 本来なら衛星のアイコンですがandroid標準アイコンを設定
+ .setSmallIcon(android.R.drawable.btn_star)
+ .setContentText("GPS")
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent)
+ .setWhen(System.currentTimeMillis())
+ .build();
+
+ // startForeground
+ startForeground(1, notification);
+ }
+
+ startGPS();
+
+ return START_NOT_STICKY;
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ @Override
+ protected void onHandleIntent(Intent intent) {
+// Log.d("debug", "onHandleIntent");
+ }
+
+ protected void startGPS() {
+// Log.d("debug", "startGPS");
+ final boolean gpsEnabled
+ = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ if (!gpsEnabled) {
+ // GPSを設定するように促す
+ enableLocationSettings();
+ }
+
+ if (locationManager != null) {
+ try {
+ if (ActivityCompat.checkSelfPermission(this,
+ Manifest.permission.ACCESS_FINE_LOCATION) !=
+ PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+// Log.d("debug", "requestLocationUpdates:");
+
+ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
+ MinTime, MinDistance, this);
+ } catch (Exception e) {
+// Log.d("debug", "Exception:");
+
+ e.printStackTrace();
+ }
+ } else {
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+// Log.d("debug", "onDestroy");
+ super.onDestroy();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+// Log.d("debug", "onLocationChanged");
+ Log.d("debug", "lat:" + location.getLatitude());
+ Log.d("debug", "lon:" + location.getLongitude());
+
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+
+ }
+
+ private void enableLocationSettings() {
+ Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ startActivity(settingsIntent);
+ }
+
+}
diff --git a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java
index 465353e..425b4b6 100644
--- a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java
@@ -137,7 +137,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
// .baseUrl("http://10.0.2.2:8080/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
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 5580a7e..cea6b8e 100644
--- a/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/CreateGroupActivity.java
@@ -48,7 +48,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
diff --git a/app/src/main/java/com/example/cosmosclient/views/ForgotPasswordActivity.java b/app/src/main/java/com/example/cosmosclient/views/ForgotPasswordActivity.java
index 651439d..515e911 100644
--- a/app/src/main/java/com/example/cosmosclient/views/ForgotPasswordActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/ForgotPasswordActivity.java
@@ -21,22 +21,22 @@
//idの取得
final EditText EmailAddressText = findViewById(R.id.NameText);
- Button SendButton = findViewById(R.id.SendButton);
+ //Button SendButton = findViewById(R.id.SendButton);
//EmailAddressText.addTextChangedListener(this);
- //送信ボタン処理
- SendButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String MailAddress = EmailAddressText.getText().toString();
-
- //メールアドレスをサーバに送信する処理の予定
- Toast.makeText(ForgotPasswordActivity.this,
- "入力されたアドレスにメールを送信しました", Toast.LENGTH_SHORT).show();
- finish();
- }
- });
+// //送信ボタン処理
+// SendButton.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// String MailAddress = EmailAddressText.getText().toString();
+//
+// //メールアドレスをサーバに送信する処理の予定
+// Toast.makeText(ForgotPasswordActivity.this,
+// "入力されたアドレスにメールを送信しました", Toast.LENGTH_SHORT).show();
+// finish();
+// }
+// });
} //@Override
// public void beforeTextChanged(CharSequence s, int start, int count,int after) {
// //ignore
diff --git a/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java b/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java
index 16bd164..08b6688 100644
--- a/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java
@@ -5,6 +5,8 @@
import android.graphics.BitmapFactory;
import android.nfc.Tag;
import android.os.Bundle;
+import android.provider.MediaStore;
+import android.support.v4.app.ActivityCompat;
import android.util.Base64;
import android.util.Log;
import android.view.View;
@@ -21,6 +23,7 @@
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
+import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
@@ -29,6 +32,10 @@
import com.example.cosmosclient.entities.Group;
import com.example.cosmosclient.entities.GroupListResponse;
import com.example.cosmosclient.entities.MemberListResponse;
+import com.example.cosmosclient.entities.User;
+import com.example.cosmosclient.entities.UserResponse;
+import com.example.cosmosclient.entities.jsons.GroupJson;
+import com.example.cosmosclient.resources.UsersRest;
import com.example.cosmosclient.views.DynamicGridView;
import com.example.cosmosclient.resources.GroupsRest;
import retrofit2.Call;
@@ -48,7 +55,7 @@
private static final String TAG = GroupListActivity.class.getName();
private DynamicGridView gridView;
- GroupListResponse result;
+ private GroupListResponse result;
@Override
@@ -57,26 +64,165 @@
setContentView(R.layout.activity_group_list);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
-
final String uId,token;
- Cosmos app = (Cosmos) getApplication();
+ final Cosmos app = (Cosmos) getApplication();
uId = app.getuId();
token = app.getToken();
- //ユーザ名とユーザIDを表示したい
- final String uName;
- uName = "hogehoge";
- NavigationView navView = (NavigationView) findViewById(R.id.nav_view);
- View headerView = navView.getHeaderView(0);
- TextView userNameTextView = navView.getHeaderView(0).findViewById(R.id.userName);
- TextView userIDTextView = navView.getHeaderView(0).findViewById(R.id.userID);
- userNameTextView.setText("ユーザ名:"+uName);
- userIDTextView.setText("ユーザID:"+uId);
- final ArrayList groupList = new ArrayList<>();
+
+
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+
+ final UsersRest getUsersService = retrofit.create(UsersRest.class);
+ //APIに値を送信
+ Call call = getUsersService.getName(uId,token);
+ //サーバからデータ受け取り
+ call.enqueue(new Callback() {
+ //成功時
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ UserResponse result = response.body();
+
+ //アイコンとユーザ名とユーザIDを表示したい
+ final String uName;
+ final String uIcon;
+ NavigationView navView = (NavigationView) findViewById(R.id.nav_view);
+ View headerView = navView.getHeaderView(0);
+ TextView userNameTextView = navView.getHeaderView(0).findViewById(R.id.userName);
+ TextView userIDTextView = navView.getHeaderView(0).findViewById(R.id.userID);
+ ImageView userIcon = navView.getHeaderView(0).findViewById(R.id.userIcon);
+ userIDTextView.setText("ユーザID:"+uId);
+ uName = result.name;
+ uIcon = result.iconUri;
+ userNameTextView.setText("ユーザ名:"+uName);
+ if (uIcon != null) {
+ byte[] decodedByte = Base64.decode(uIcon, 0);
+ userIcon.setImageBitmap(BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length));
+ }
+
+// //画像をBase64に変換
+// Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.default_icon_image);
+// ByteArrayOutputStream baos = new ByteArrayOutputStream();
+// icon.compress(Bitmap.CompressFormat.JPEG,100, baos);
+// byte[] b = baos.toByteArray();
+// String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
+//// Toast.makeText(GroupListActivity.this,"接続できたよ",Toast.LENGTH_LONG).show();
+
+
+ //アイコンが未設定ならデフォルト画像を設定
+// for(int i = 0; i call, Throwable t) {
+ t.printStackTrace();
+ Toast.makeText(GroupListActivity.this,
+ "ユーザー情報取得失敗", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+// ArrayList GroupList = new ArrayList<>();
+// for (int i = 0; i < result.getGroupCount(); i++) {
+// GroupList.add(result.getGroup(i).getName());
+// }
+ gridView = (DynamicGridView) findViewById(R.id.dynamic_grid);
+
+ gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
+ @Override
+ public void onDragStarted(int position) {
+ Log.d(TAG, "drag started at position" + position);
+ }
+
+ @Override
+ public void onDragPositionsChanged(int oldPosition, int newPosition) {
+ Log.d(TAG, String.format("drag item position changed from %d to %d", oldPosition, newPosition));
+ }
+
+ });
+
+ gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+ @Override
+ public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
+ gridView.startEditMode(position);
+ return true;
+ }
+ });
+
+ // グループの中にはいる(リクエスト一覧画面へ)
+ gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+// Toast.makeText(GroupListActivity.this, parent.getAdapter().getItem(position).toString(),
+// Toast.LENGTH_SHORT).show();
+ GroupJson group = result.getGroups().get(position);
+ ((Cosmos)getApplication()).setCurrentGroup(new Group(group));
+
+ Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class);
+ startActivity(intent);
+ }
+ });
+
+ /* とりあえずの画面遷移なので変更するかも */
+// TextView group1 = findViewById(R.id.group1);
+// group1.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View view) {
+// gridView.stopEditMode();
+// Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class);
+// startActivity(intent);
+// }
+// });
+
+
+ DrawerLayout drawer = findViewById(R.id.drawer_layout);
+ NavigationView navigationView = findViewById(R.id.nav_view);
+ ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+ this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+ drawer.addDrawerListener(toggle);
+ toggle.syncState();
+ navigationView.setNavigationItemSelectedListener(this);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ final String uId,token;
+ final Cosmos app = (Cosmos) getApplication();
+ uId = app.getuId();
+ token = app.getToken();
+
+ //retrofitの処理
+ final Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
@@ -95,9 +241,10 @@
result = result2;
// Iterator it = result.member.iterator();
// int i = 0;
- for (int i = 0; i < result.getGroupCount(); i++) {
- groupList.add(result.getGroup(i).getName());
- }
+
+// for (int i = 0; i < result.getGroupCount(); i++) {
+// groupList.add(result.getGroup(i).getName());
+// }
// グループ名一覧の表示
gridView.setAdapter((ListAdapter) new CheeseDynamicAdapter(GroupListActivity.this,
@@ -147,63 +294,6 @@
"グループ情報取得失敗", Toast.LENGTH_SHORT).show();
}
});
-
-// ArrayList GroupList = new ArrayList<>();
-// for (int i = 0; i < result.getGroupCount(); i++) {
-// GroupList.add(result.getGroup(i).getName());
-// }
- gridView = (DynamicGridView) findViewById(R.id.dynamic_grid);
-
- gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
- @Override
- public void onDragStarted(int position) {
- Log.d(TAG, "drag started at position" + position);
- }
-
- @Override
- public void onDragPositionsChanged(int oldPosition, int newPosition) {
- Log.d(TAG, String.format("drag item position changed from %d to %d", oldPosition, newPosition));
- }
-
- });
-
- gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
- gridView.startEditMode(position);
- return true;
- }
- });
-
- gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
-// Toast.makeText(GroupListActivity.this, parent.getAdapter().getItem(position).toString(),
-// Toast.LENGTH_SHORT).show();
- Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class);
- startActivity(intent);
- }
- });
-
- /* とりあえずの画面遷移なので変更するかも */
-// TextView group1 = findViewById(R.id.group1);
-// group1.setOnClickListener(new View.OnClickListener() {
-// @Override
-// public void onClick(View view) {
-// gridView.stopEditMode();
-// Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class);
-// startActivity(intent);
-// }
-// });
-
-
- DrawerLayout drawer = findViewById(R.id.drawer_layout);
- NavigationView navigationView = findViewById(R.id.nav_view);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.addDrawerListener(toggle);
- toggle.syncState();
- navigationView.setNavigationItemSelectedListener(this);
}
@Override
@@ -257,6 +347,7 @@
} else if (id == R.id.signOutButton){
gridView.stopEditMode();
Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.SigninActivity.class);
+ ActivityCompat.finishAffinity(GroupListActivity.this);
startActivity(intent);
}
/*
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 d6c8dda..baea2a8 100644
--- a/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java
@@ -40,7 +40,7 @@
test.setText(GroupID);
//retrofitの処理
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
diff --git a/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java b/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java
index 242c8f4..0bcd81d 100644
--- a/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java
@@ -80,7 +80,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
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 957fee5..9166772 100644
--- a/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java
@@ -61,7 +61,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
diff --git a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java
index 3559520..27fc58b 100644
--- a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java
@@ -5,6 +5,7 @@
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.Gravity;
@@ -29,7 +30,7 @@
import com.example.cosmosclient.app.Cosmos;
import com.example.cosmosclient.entities.AddRequestsResponse;
import com.example.cosmosclient.entities.Request;
-import com.example.cosmosclient.entities.Requests;
+import com.example.cosmosclient.entities.RequestList;
import com.example.cosmosclient.resources.GroupsRest;
import com.example.cosmosclient.yolp.Yolp;
@@ -56,8 +57,9 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
// .baseUrl("http://10.0.2.2:8080/")
+// .baseUrl("http://10.0.2.2:8080/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
@@ -67,7 +69,7 @@
Toast toast; //動作テスト用
//Request List
- Requests requests;
+ RequestList requestList;
//Color制御
boolean productColorFlag = true; //買うもの (true:白, false:黒)
@@ -88,7 +90,8 @@
TableLayout requesttable;
// TableLayout accomplishedRequesttable = (TableLayout)findViewById(R.id.RequestList);
- HashMap selectedRequestList = new HashMap<>();
+ HashMap selectedRequestMap = new HashMap<>();
+
Button deleteButton;
Button accomplishButton;
@@ -106,7 +109,7 @@
product.setColorFilter(null);
productColorFlag = true;
ResetRequestListTable();
- AddRequestListTable(requests);
+ AddRequestListTable(requestList);
} else {
if(deadlineRotationFlag) {
deadlineRotationFlag = false;
@@ -124,7 +127,6 @@
ResetRequestListTable();
AddRequestListTable(SortProduct());
}
- isButtonShow(false);
}
};
@@ -141,7 +143,7 @@
deadline.setColorFilter(null);
deadlineColorFlag = true;
ResetRequestListTable();
- AddRequestListTable(requests);
+ AddRequestListTable(requestList);
if(!deadlineRotationFlag) {
deadline.setRotation(0);
}
@@ -166,7 +168,6 @@
AddRequestListTable(ReverseDeadline());
}
}
- isButtonShow(false);
}
};
@@ -183,7 +184,7 @@
location.setColorFilter(null);
locationColorFlag = true;
ResetRequestListTable();
- AddRequestListTable(requests);
+ AddRequestListTable(requestList);
} else {
if(deadlineRotationFlag) {
deadlineRotationFlag = false;
@@ -201,7 +202,6 @@
ResetRequestListTable();
AddRequestListTable(SortLocation());
}
- isButtonShow(false);
}
};
@@ -218,7 +218,7 @@
name.setColorFilter(null);
nameColorFlag = true;
ResetRequestListTable();
- AddRequestListTable(requests);
+ AddRequestListTable(requestList);
} else {
if(deadlineRotationFlag) {
deadlineRotationFlag = false;
@@ -236,109 +236,52 @@
ResetRequestListTable();
AddRequestListTable(SortName());
}
- isButtonShow(false);
}
};
//requestListRowOnClick
-// public View.OnClickListener requestListRowOnClick = new View.OnClickListener() {
-// @Override
-// public void onClick(View view) {
-// isButtonShow(true);
-
-// requesttable.removeView(view);
-// for(View selectedRow : selectedRequestList.values()) {
-// if(view.equals(selectedRow)) {
-// selectedRequestList.remove(selectedRow);
-// view.setBackgroundColor(Color.rgb(255, 255, 255));
-// Toast.makeText(RequestListActivity.this, view + " Reset Clicked!", Toast.LENGTH_SHORT).show();
-// }
-// }
-// selectedRequestList.put(requesttable.indexOfChild(view), view);
-// view.setBackgroundColor(Color.rgb(200, 200, 200));
-// Toast.makeText(RequestListActivity.this, requesttable.indexOfChild(view) + "row Clicked!", Toast.LENGTH_SHORT).show();
-// }
-// };
-
- //requestListRowOnLongClick
- public View.OnLongClickListener requestListRowOnLongClick = new View.OnLongClickListener() {
+ public View.OnLongClickListener requestListRowOnClick = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
- isButtonShow(true);
+ if(!deleteButton.isShown()) {
+ deleteButton.setVisibility(View.VISIBLE);
+ accomplishButton.setVisibility(View.VISIBLE);
+
+ deleteButton.setClickable(true);
+ accomplishButton.setClickable(true);
+
+ deleteButton.setOnClickListener(deleteOnClick);
+ accomplishButton.setOnClickListener(accomplishOnClick);
+ }
// requesttable.removeView(view);
- for(View selectedRow : selectedRequestList.values()) {
+ for(View selectedRow : selectedRequestMap.values()) {
if(view.equals(selectedRow)) {
- selectedRequestList.remove(selectedRow);
+ selectedRequestMap.remove(selectedRow);
view.setBackgroundColor(Color.rgb(255, 255, 255));
Toast.makeText(RequestListActivity.this, view + " Reset Clicked!", Toast.LENGTH_SHORT).show();
return false;
}
}
- selectedRequestList.put(requesttable.indexOfChild(view), view);
+ selectedRequestMap.put(requesttable.indexOfChild(view), view);
view.setBackgroundColor(Color.rgb(200, 200, 200));
Toast.makeText(RequestListActivity.this, requesttable.indexOfChild(view) + "row Clicked!", Toast.LENGTH_SHORT).show();
return false;
}
};
- //deleteButtonOnClick
+ //nameOnClick
public View.OnClickListener deleteOnClick = new View.OnClickListener() {
@Override
public void onClick(View view) {
-
- //RequestList取得するための必要な情報
-// Cosmos app = (Cosmos) getApplication();
-// final String gId = app.getCurentGroup().getgId();
-// final String uId = app.getuId();
-// final String token = app.getToken();
-//
-// for(Integer i : selectedRequestList.keySet()) {
-// Request request = requests.getRequest(i - 1);
-// String deadline = null;
-// if(request.getDeadline() != null) {
-// deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", request.getDeadline().getYear(), request.getDeadline().getMonth() + 1, request.getDeadline().getDate() + 1, 23, 59, 59);
-// }
-// final Call updateReqestCall = requestsService.updateRequest(gId, request.getrId(), uId, request.getProduct(), deadline, request.getLocation(), true, token);
-// requests.removeRequest(i - 1);
-//
-// //サーバからのレスポンス
-// updateReqestCall.enqueue(new Callback() {
-// //成功時
-// @Override
-// public void onResponse(Call call, Response response) {
-// if (response.isSuccessful()) {
-// AddRequestsResponse result = response.body();
-// Toast.makeText(RequestListActivity.this, "RequestListを達成しました", Toast.LENGTH_SHORT).show();
-//
-// ResetRequestListTable();
-// AddRequestListTable(requests);
-// } else {
-// try {
-// System.out.println(response.errorBody().string());
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-//
-// //onFailureでキャッチできないエラーの処理
-// Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show();
-// }
-// }
-//
-// //失敗時
-// @Override
-// public void onFailure(Call call, Throwable t) {
-// t.printStackTrace();
-// Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show();
-// }
-// });
-// }
-// isButtonShow(false);
}
};
- //accomplishButtonOnClick
- public View.OnClickListener accomplishOnClick = new View.OnClickListener() {
+ //nameOnClick
+ public final View.OnClickListener accomplishOnClick = new View.OnClickListener() {
+ Handler handler = new Handler();
+// List selectedRequestList = new ArrayList<>();
+
@Override
public void onClick(View view) {
@@ -348,47 +291,52 @@
final String uId = app.getuId();
final String token = app.getToken();
- for(Integer i : selectedRequestList.keySet()) {
- Request request = requests.getRequest(i - 1);
- String deadline = null;
- if(request.getDeadline() != null) {
- deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", request.getDeadline().getYear(), request.getDeadline().getMonth() + 1, request.getDeadline().getDate() + 1, 23, 59, 59);
- }
- final Call updateReqestCall = requestsService.updateRequest(gId, request.getrId(), uId, request.getProduct(), deadline, request.getLocation(), true, token);
- requests.removeRequest(i - 1);
-
- //サーバからのレスポンス
- updateReqestCall.enqueue(new Callback() {
- //成功時
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()) {
- AddRequestsResponse result = response.body();
- Toast.makeText(RequestListActivity.this, "RequestListを達成しました", Toast.LENGTH_SHORT).show();
-
- ResetRequestListTable();
- AddRequestListTable(requests);
- } else {
- try {
- System.out.println(response.errorBody().string());
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- //onFailureでキャッチできないエラーの処理
- Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show();
+ new Thread(new Runnable() {
+ public void run() {
+ for (Integer i : selectedRequestMap.keySet()) {
+ Request request = requestList.getRequest(i - 1);
+// selectedRequestList.add(request);
+ String deadline = null;
+ if (request.getDeadline() != null) {
+ deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", request.getDeadline().getYear(), request.getDeadline().getMonth() + 1, request.getDeadline().getDate() + 1, 23, 59, 59);
}
- }
+ final Call updateReqestCall = requestsService.updateRequest(gId, request.getrId(), uId, request.getProduct(), deadline, request.getLocation(), true, token);
+ Response response;
+ try {
+ response = updateReqestCall.execute();
+ if (response.isSuccessful()) {
+ AddRequestsResponse result = response.body();
+// Toast.makeText(RequestListActivity.this, "RequestListを達成しました", Toast.LENGTH_SHORT).show();
+// requestList.removeRequests(selectedRequestList);
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ ResetRequestListTable();
+ AddRequestListTable(requestList);
+ }
+ });
+ } else {
+ // onFailure
+ try {
+ System.out.println(response.errorBody().string());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
- //失敗時
- @Override
- public void onFailure(Call call, Throwable t) {
- t.printStackTrace();
- Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show();
+ //onFailureでキャッチできないエラーの処理
+// Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+// Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show();
+
+ }
+
}
- });
- }
- isButtonShow(false);
+ }
+ }).start();
+ deleteButton.setVisibility(View.INVISIBLE);
+ accomplishButton.setVisibility(View.INVISIBLE);
}
};
@@ -494,27 +442,28 @@
super.onStart();
//RequestList取得するための必要な情報
- Cosmos app = (Cosmos) getApplication();
+ final Cosmos app = (Cosmos) getApplication();
final String gId = app.getCurentGroup().getgId();
final String token = app.getToken();
final boolean detail = true;
int quantity = 20;
- final Call requestsListByGidCall = requestsService.getRequestsListByGid(gId, token, detail, quantity);
+ final Call requestsListByGidCall = requestsService.getRequestsListByGid(gId, token, detail, quantity);
//サーバからのレスポンス
- requestsListByGidCall.enqueue(new Callback() {
+ requestsListByGidCall.enqueue(new Callback() {
//成功時
@Override
- public void onResponse(Call call, Response response) {
+ public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
- requests = response.body();
+ requestList = response.body();
+ app.getCurentGroup().setRequestList(requestList);
//Add RequestList Table
- AddRequestListTable(requests);
+ AddRequestListTable(requestList);
-// Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show();
+ Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show();
} else {
try {
System.out.println("a" + response.errorBody().string());
@@ -528,7 +477,7 @@
//失敗時
@Override
- public void onFailure(Call call, Throwable t) {
+ public void onFailure(Call call, Throwable t) {
t.printStackTrace();
Toast.makeText(RequestListActivity.this, "RequestListの取得失敗しました", Toast.LENGTH_SHORT).show();
}
@@ -542,10 +491,10 @@
ResetRequestListTable();
- requests.clearRequest();
+ requestList.clearRequest();
// //Add RequestList Table
-// AddRequestListTable(requests);
+// AddRequestListTable(requestList);
}
@SuppressWarnings("StatementWithEmptyBody")
@@ -576,21 +525,21 @@
return true;
}
- private int ConvertMonth(int i, Requests requests) {
- return requests.getRequest(i).getDeadline().getMonth() + 1;
+ private int ConvertMonth(int i, RequestList requestList) {
+ return requestList.getRequest(i).getDeadline().getMonth() + 1;
}
@TargetApi(Build.VERSION_CODES.O)
- private void AddRequestListTable(Requests requests) {
+ private void AddRequestListTable(RequestList requestList) {
Date now = new Date();
// TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList);
requesttable.setShrinkAllColumns(true);
- for (int i = 0; i < requests.getRequestCount(); i++) {
+ for (int i = 0; i < requestList.getRequestCount(); i++) {
TableRow tableRow = new TableRow(this);
TextView textProduct = new TextView(this);
- textProduct.setText(requests.getRequest(i).getProduct());
+ textProduct.setText(requestList.getRequest(i).getProduct());
textProduct.setTextSize(20);
textProduct.setHeight(150);
textProduct.setGravity(Gravity.CENTER);
@@ -606,8 +555,8 @@
// if (requestList.get(i).getDeadline().getMonth() == now.getMonth() && requestList.get(i).getDeadline().getDate() - now.getDate() == 1) {
// textDeadline.setText("明日まで");
// }
- if(requests.getRequest(i).getDeadline() != null) {
- textDeadline.setText(ConvertMonth(i, requests) + "/" + requests.getRequest(i).getDeadline().getDate());
+ if(requestList.getRequest(i).getDeadline() != null) {
+ textDeadline.setText(ConvertMonth(i, requestList) + "/" + requestList.getRequest(i).getDeadline().getDate());
}
// textDeadline.setText(now.getMonth() + "/" + now.getDate());
textDeadline.setTextSize(20);
@@ -616,8 +565,8 @@
tableRow.addView(textDeadline, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT));
TextView textLocation = new TextView(this);
- if(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()) != null) {
- textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()).getSubName());
+ if(Yolp.getInstance().getSubCategoryByCode(requestList.getRequest(i).getLocation()) != null) {
+ textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requestList.getRequest(i).getLocation()).getSubName());
}
textLocation.setTextSize(20);
@@ -626,13 +575,13 @@
tableRow.addView(textLocation, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT));
TextView textName = new TextView(this);
- textName.setText(requests.getRequest(i).getIssuer().getName());
+ textName.setText(requestList.getRequest(i).getIssuer().getName());
textName.setTextSize(20);
textName.setHeight(150);
textName.setGravity(Gravity.CENTER);
tableRow.addView(textName, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT));
- tableRow.setOnLongClickListener(requestListRowOnLongClick);
+ tableRow.setOnLongClickListener(requestListRowOnClick);
requesttable.addView(tableRow);
}
@@ -649,59 +598,38 @@
}
}
- private void isButtonShow(boolean flag) {
- if(!flag && deleteButton.isShown()) { //編集ボタンが見えているとき
- deleteButton.setVisibility(View.INVISIBLE);
- accomplishButton.setVisibility(View.INVISIBLE);
-
- deleteButton.setClickable(false);
- accomplishButton.setClickable(false);
-
- selectedRequestList.clear();
- } else if(flag && !deleteButton.isShown()){
- deleteButton.setVisibility(View.VISIBLE);
- accomplishButton.setVisibility(View.VISIBLE);
-
- deleteButton.setClickable(true);
- accomplishButton.setClickable(true);
-
- deleteButton.setOnClickListener(deleteOnClick);
- accomplishButton.setOnClickListener(accomplishOnClick);
- }
- }
-
- private Requests SortProduct() {
- List productsortRequestlist = (List) requests.getRequests();
+ private RequestList SortProduct() {
+ List productsortRequestlist = (List) requestList.getRequests();
Collections.sort(productsortRequestlist, productSortComparator);
- return new Requests(productsortRequestlist);
+ return new RequestList(productsortRequestlist);
}
- private Requests SortDeadline() {
- List deadlinesortRequestlist = (List) requests.getRequests();
+ private RequestList SortDeadline() {
+ List deadlinesortRequestlist = (List) requestList.getRequests();
Collections.sort(deadlinesortRequestlist, deadlineSortComparator);
- return new Requests(deadlinesortRequestlist);
+ return new RequestList(deadlinesortRequestlist);
}
- private Requests ReverseDeadline() {
- List deadlinesortRequestlist = (List) requests.getRequests();
+ private RequestList ReverseDeadline() {
+ List deadlinesortRequestlist = (List) requestList.getRequests();
Collections.sort(deadlinesortRequestlist, deadlineReverseComparator);
- return new Requests(deadlinesortRequestlist);
+ return new RequestList(deadlinesortRequestlist);
}
- private Requests SortLocation() {
- List locationsortRequestlist = (List) requests.getRequests();
+ private RequestList SortLocation() {
+ List locationsortRequestlist = (List) requestList.getRequests();
Collections.sort(locationsortRequestlist, locationSortComparator);
- return new Requests(locationsortRequestlist);
+ return new RequestList(locationsortRequestlist);
}
- private Requests SortName() {
- List namesortRequestlist = (List) requests.getRequests();
+ private RequestList SortName() {
+ List namesortRequestlist = (List) requestList.getRequests();
Collections.sort(namesortRequestlist, nameSortComparator);
- return new Requests(namesortRequestlist);
+ return new RequestList(namesortRequestlist);
}
}
\ No newline at end of file
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 b5b78ae..f1cd4e9 100644
--- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java
@@ -1,21 +1,40 @@
package com.example.cosmosclient.views;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.Manifest;
+import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Handler;
+import android.os.HandlerThread;
+import android.support.annotation.NonNull;
+import android.support.annotation.RequiresApi;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
+import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
+import com.example.cosmosclient.MainActivity;
import com.example.cosmosclient.R;
import com.example.cosmosclient.app.Cosmos;
+import com.example.cosmosclient.entities.AreaInformation;
import com.example.cosmosclient.entities.SigninResponse;
import com.example.cosmosclient.resources.UsersRest;
+import com.example.cosmosclient.services.CosomosBackgroundService;
+
+import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.Callback;
@@ -27,11 +46,24 @@
private boolean uIdEnable;
private boolean pwEnable;
private Button SigninButton;
+ private Intent intentservice;
+ private static final int REQUEST_MULTI_PERMISSIONS = 101;
+
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signin);
+ Context context = getApplicationContext();
+
+ // Android 6, API 23以上でパーミッシンの確認
+ if(Build.VERSION.SDK_INT >= 23){
+ checkMultiPermissions();
+ }
+ else{
+ startService();
+ }
//各種IDを取得
SigninButton = findViewById(R.id.SigninButton);
@@ -62,7 +94,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
@@ -148,6 +180,8 @@
}
});
}
+
+
private class GenericTextWatcher implements TextWatcher{
private View view;
@@ -188,4 +222,95 @@
}
}
}
+ // 結果の受け取り
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ @NonNull String[] permissions, @NonNull int[] grantResults) {
+
+ if (requestCode == REQUEST_MULTI_PERMISSIONS) {
+ if (grantResults.length > 0) {
+ for (int i = 0; i < permissions.length; i++) {
+ // 位置情報
+ if (permissions[i].
+ equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
+ if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
+ // 許可された
+
+ } else {
+ // それでも拒否された時の対応
+ toastMake("位置情報の許可がないので計測できません");
+ }
+ }
+ // 外部ストレージ
+ else if (permissions[i].
+ equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
+ // 許可された
+ } else {
+ // それでも拒否された時の対応
+ toastMake("外部書込の許可がないので書き込みできません");
+ }
+ }
+ }
+
+ startService();
+
+ }
+ }
+ else{
+ //
+ }
+ }
+ // 位置情報許可の確認、外部ストレージのPermissionにも対応できるようにしておく
+ private void checkMultiPermissions(){
+ // 位置情報の Permission
+ int permissionLocation = ContextCompat.checkSelfPermission(this,
+ Manifest.permission.ACCESS_FINE_LOCATION);
+ // 外部ストレージ書き込みの Permission
+ int permissionExtStorage = ContextCompat.checkSelfPermission(this,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE);
+
+ ArrayList reqPermissions = new ArrayList<>();
+
+ // 位置情報の Permission が許可されているか確認
+ if (permissionLocation == PackageManager.PERMISSION_GRANTED) {
+ // 許可済
+ }
+ else{
+ // 未許可
+ reqPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
+ }
+
+
+ // 未許可
+ if (!reqPermissions.isEmpty()) {
+ ActivityCompat.requestPermissions(this,
+ (String[]) reqPermissions.toArray(new String[0]),
+ REQUEST_MULTI_PERMISSIONS);
+ // 未許可あり
+ }
+ else{
+ // 許可済
+ startService();
+ }
+ }
+ //serviceをスタートさせる
+ private void startService() {
+ Thread thread = new Thread() {
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ public void run() {
+ intentservice = new Intent(SigninActivity.this, CosomosBackgroundService.class);
+ startForegroundService(intentservice);
+
+ }
+ };
+ thread.start();
+ }
+ // トーストの生成
+ private void toastMake(String message){
+ Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG);
+ // 位置調整
+ toast.setGravity(Gravity.CENTER, 0, 200);
+ toast.show();
+ }
}
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 f6f3965..32a05c0 100644
--- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java
+++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java
@@ -50,7 +50,7 @@
//retrofitの処理
final Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
//interfaceから実装を取得
diff --git a/app/src/main/res/layout/activity_forgot_password.xml b/app/src/main/res/layout/activity_forgot_password.xml
index e5b5ac9..006209f 100644
--- a/app/src/main/res/layout/activity_forgot_password.xml
+++ b/app/src/main/res/layout/activity_forgot_password.xml
@@ -7,6 +7,7 @@
android:background="#FFFFFF"
tools:context=".views.ForgotPasswordActivity">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/nav_header_group_list.xml b/app/src/main/res/layout/nav_header_group_list.xml
index 649c531..81a5cda 100644
--- a/app/src/main/res/layout/nav_header_group_list.xml
+++ b/app/src/main/res/layout/nav_header_group_list.xml
@@ -14,9 +14,9 @@
android:theme="@style/ThemeOverlay.AppCompat.Dark">