diff --git a/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java b/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java index 4a581ac..3dc2816 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java +++ b/app/src/main/java/com/example/cosmosclient/entities/AreaInformation.java @@ -5,14 +5,14 @@ import java.util.HashMap; public class AreaInformation { - private Location location = new Location(); + private CosmosLocation location = new CosmosLocation(); private HashMap> feature = new HashMap<>(); private Time lastUpdated; - public void setLocation(Location location){ + public void setLocation(CosmosLocation location){ this.location = location; } - public Location getLocation(){ + public CosmosLocation getLocation(){ return this.location; } diff --git a/app/src/main/java/com/example/cosmosclient/entities/CosmosLocation.java b/app/src/main/java/com/example/cosmosclient/entities/CosmosLocation.java new file mode 100644 index 0000000..a13d9db --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/CosmosLocation.java @@ -0,0 +1,24 @@ +package com.example.cosmosclient.entities; + +public class CosmosLocation { + 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/Feature.java b/app/src/main/java/com/example/cosmosclient/entities/Feature.java index 63c3374..e498d67 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/Feature.java +++ b/app/src/main/java/com/example/cosmosclient/entities/Feature.java @@ -1,15 +1,22 @@ package com.example.cosmosclient.entities; public class Feature { - private String name; + private String genre; private int code; - private Location location = new Location(); + private CosmosLocation location = new CosmosLocation(); - public void setName(String name){ - this.name = name; + public void setLatitude(double latitude) { + location.setLatitude(latitude); } - public String getName(){ - return this.name; + public void setLongitude(double longitude) { + location.setLongitude(longitude); + } + + public String getGenre() { + return genre; + } + public void setGenre(String genre) { + this.genre = genre; } public void setCode(int code){ @@ -19,10 +26,10 @@ return this.code; } - public void setLocation(Location location){ + public void setLocation(CosmosLocation location){ this.location = location; } - public Location getLocation(){ + public CosmosLocation getLocation(){ return this.location; } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/entities/Location.java b/app/src/main/java/com/example/cosmosclient/entities/Location.java deleted file mode 100644 index 113b555..0000000 --- a/app/src/main/java/com/example/cosmosclient/entities/Location.java +++ /dev/null @@ -1,24 +0,0 @@ -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/resources/LocationRest.java b/app/src/main/java/com/example/cosmosclient/resources/LocationRest.java new file mode 100644 index 0000000..0e74d20 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/resources/LocationRest.java @@ -0,0 +1,20 @@ +package com.example.cosmosclient.resources; + +import com.example.cosmosclient.entities.AreaInformation; +import com.example.cosmosclient.entities.Feature; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + + +public interface LocationRest { + + @GET("shops") + Call> LocationService(@Query("leftLatitude") String leftLat, + @Query("leftLongitude") String leftLon, + @Query("rightLatitude") String rightLat, + @Query("rightLongitude") String rightLon); +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java b/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java deleted file mode 100644 index 0d9a51c..0000000 --- a/app/src/main/java/com/example/cosmosclient/resources/ShopRest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/services/CosmosBackgroundService.java b/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java index 407751a..94061c6 100644 --- a/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java +++ b/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java @@ -2,6 +2,7 @@ import android.Manifest; import android.app.IntentService; +import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; @@ -24,10 +25,8 @@ import com.example.cosmosclient.R; import com.example.cosmosclient.app.Cosmos; -import com.example.cosmosclient.entities.Feature; import com.example.cosmosclient.entities.Group; import com.example.cosmosclient.entities.GroupListResponse; -import com.example.cosmosclient.entities.Request; import com.example.cosmosclient.entities.RequestList; import com.example.cosmosclient.entities.jsons.GroupJson; import com.example.cosmosclient.resources.GroupsRest; @@ -35,13 +34,7 @@ import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.TimeZone; import java.util.Timer; import java.util.TimerTask; @@ -118,7 +111,7 @@ channel.enableVibration(false); if (notificationManager != null) { notificationManager.createNotificationChannel(channel); - android.app.Notification notification = new android.app.Notification.Builder(context, channelId) + Notification notification = new Notification.Builder(context, channelId) .setContentTitle(title) // 本来なら衛星のアイコンですがandroid標準アイコンを設定 .setSmallIcon(android.R.drawable.btn_star) @@ -245,7 +238,7 @@ // Log.d(TAG, "onLocationChanged"); Log.d(TAG, "lat:" + location.getLatitude()); Log.d(TAG, "lon:" + location.getLongitude()); - + updateAreaInformation(location); this.notifications=searchNotifications(cosmos,location); @@ -364,80 +357,8 @@ } public List searchNotifications(Cosmos cosmos, Location location){ - double NowLat =location.getLatitude(); - double NowLon =location.getLongitude(); - //業番:notification - HashMap> codeToNotification = new HashMap<>(); - //業番:feature - HashMap> codeToFeature = new HashMap<>(); - ArrayList groups =(ArrayList) cosmos.getGroups(); - //現在時刻取得 - Date nowDate = new Date(); - //codeToNotificationを作成。Featureはnull - for(int i = 0 ; i < groups.size(); i++) { - //requestのArrayListを回す - for (int j = 0; j < groups.get(i).getRequestList().getRequests().size(); j++) { - //codeToNotificationに格納するArrayListを初期化 - ArrayList notifications = null; - //期限内かつ未達成のrequestのみ取得 - if (groups.get(i).getRequestList().getRequests().get(j).getDeadline().after(nowDate) && groups.get(i).getRequestList().getRequests().get(j).isDone() == false) { - //notificationを作成 - Notification notification = new Notification(groups.get(i).getRequestList().getRequests().get(j),groups.get(i),null); - //指定したkey(業番)を持っているHashMapがなければ作成する。 - if(codeToNotification.get(groups.get(i).getRequestList().getRequests().get(j))==null){ - notifications.add(notification); - codeToNotification.put(groups.get(i).getRequestList().getRequests().get(j).getLocation(),notifications); - }else{ - //keyをすでに持っている場合はArrayListにnotification単体を追加していく - codeToNotification.get(groups.get(i).getRequestList().getRequests().get(j).getLocation()).add(notification); - } - } - } - } - //cosmosから区画情報から取得 - int areaInfoId =(int)((NowLat+90)/0.1)+(int)((NowLon/0.1)*1800); - codeToFeature =cosmos.getAreaInfo(areaInfoId).getFeature(); - //codeToFeatureの中の50m圏外Featureを削除していく。 - //HashMapを順番に実行 - for(HashMap.Entry> e : codeToFeature.entrySet()) { - //ArrayList>を回していく - for(int i=e.getValue().size(); i >= 0;i--) { - float[] distance = getDistance(NowLat, NowLon, e.getValue().get(i).getLocation().getLatitude(), e.getValue().get(i).getLocation().getLongitude()); - // distance[0] = [2点間の距離] - //50m圏外のFeatureを削除 - if (distance[0] > 50) { - e.getValue().remove(i); - } - } - //codeToNotificationのkeyとcodeToFeatureのkeyが一致すれば - //codeToFeatureのArrayをcodeToNotificationのArrayfeaturesに代入する - if(codeToNotification.containsKey(e.getKey())==true){ - for(int j=0;j result = new ArrayList(); - - for (ArrayList list: codeToNotification.values()) { - result.addAll(list); - } - - return result; - } - public float[] getDistance(double x, double y, double x2, double y2) { - // 結果を格納するための配列を生成 - float[] results = new float[3]; - // results[0] = [2点間の距離] - // results[1] = [始点から見た方位角] - // results[2] = [終点から見た方位角] - - // 距離計算 - Location.distanceBetween(x, y, x2, y2, results); - - return results; + return null; } }