diff --git a/app/build.gradle b/app/build.gradle index c635f8b..feb7b35 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ compileSdkVersion 28 defaultConfig { applicationId "com.example.cosmosclient" - minSdkVersion 15 + minSdkVersion 26 targetSdkVersion 28 versionCode 1 versionName "1.0" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f677df0..85fa6bb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,6 +83,12 @@ + + + + + + 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 986dcc5..9a9a4eb 100644 --- a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java +++ b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java @@ -1,43 +1,129 @@ package com.example.cosmosclient.app; +import android.Manifest; +import android.app.Activity; import android.app.Application; import android.content.ComponentCallbacks; import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.Context; import android.content.res.Configuration; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.RequiresApi; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.util.Log; import com.example.cosmosclient.entities.Area; import com.example.cosmosclient.entities.AreaInformation; import com.example.cosmosclient.entities.CachePref; import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.services.CosmosBackgroundService; +import com.example.cosmosclient.views.RequestPermissionsActivity; + import com.example.cosmosclient.entities.ObjectStorage; import com.google.gson.Gson; import android.content.SharedPreferences; +import android.view.Gravity; +import android.widget.Toast; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; public class Cosmos extends Application { + private String TAG = Cosmos.class.getSimpleName(); private String token=null; private Group curGroup=null; private HashMap groups = new HashMap<>(); private String uId=null; private HashMap areaInfo = new HashMap<>(); private ArrayList areaInfoKey= new ArrayList<>(); - private String TAG = Cosmos.class.getSimpleName(); + private static final int REQUEST_MULTI_PERMISSIONS = 101; + ArrayList reqPermissions = new ArrayList<>(); private Area theWorld = new Area(); public Cosmos() { super(); Log.d(TAG, " Constructor"); + + registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { + @Override + public void onActivityCreated(Activity activity, Bundle bundle) { + Log.d(TAG, activity + "onActivityCreated"); + // 未許可あり + if (activity instanceof RequestPermissionsActivity && !reqPermissions.isEmpty()) { + Log.d(TAG, "isRequestPermission"); + ((RequestPermissionsActivity)activity).setOnRequestPermissionsResultCallback(new ActivityCompat.OnRequestPermissionsResultCallback() { + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + Log.d(TAG, "onRequestPermissionsResult"); + 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("外部書込の許可がないので書き込みできません"); + } + } + } + startBackgroundService(getApplicationContext()); + } + } + } + }); + ActivityCompat.requestPermissions(activity, (String[]) reqPermissions.toArray(new String[0]), REQUEST_MULTI_PERMISSIONS); + } + } + + @Override + public void onActivityStarted(Activity activity) { + } + + @Override + public void onActivityResumed(Activity activity) { + } + + @Override + public void onActivityPaused(Activity activity) { + } + + @Override + public void onActivityStopped(Activity activity) { + } + + @Override + public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { + } + + @Override + public void onActivityDestroyed(Activity activity) { + } + + }); } @Override public void onCreate() { - Log.d(TAG, " onCreate"); + Log.d(TAG, "onCreate"); super.onCreate(); + // Android 6, API 23以上でペーミッションの確認 + if (Build.VERSION.SDK_INT >= 23) { + checkMultiPermissions(getApplicationContext()); + } } @Override @@ -157,29 +243,8 @@ //areaInfo処理 public void setAreaInfo(int areaId, AreaInformation AreaInfo){ this.areaInfo.put(areaId,AreaInfo); -// this.theWorld.setAreaInfo(areaInfo); -// SharedPreferences pref = getSharedPreferences("pref",MODE_PRIVATE); -////// SharedPreferences prefData = getSharedPreferences("pref_data", MODE_PRIVATE); -////// SharedPreferences.Editor editor = prefData.edit(); -////// editor.putString("AreaInfo", String.valueOf(areaInfo)); -////// editor.commit(); -// Gson gson = new Gson(); -// gson.toJson(theWorld); -// pref.edit().putString("Area",gson.toJson(theWorld)).commit(); -//// ObjectStorage.save(theWorld,CachePref.KEY_AREA_INFO); } public AreaInformation getAreaInfo(int areaId){ -// SharedPreferences prefData = getSharedPreferences("pref_data", MODE_PRIVATE); -// String areaInfo = prefData.getString("AreaInfo", ""); - -// this.theWorld = ObjectStorage.get(CachePref.KEY_AREA_INFO,Area.class); -// this.areaInfo = this.theWorld.getAreaInfo(); - -// SharedPreferences pref = getSharedPreferences("pref",MODE_PRIVATE); -// Gson gson = new Gson(); -// theWorld = gson.fromJson(pref.getString("Area",""),Area.class); -// this.areaInfo = this.theWorld.getAreaInfo(); - return areaInfo.get(areaId); } @@ -201,4 +266,39 @@ } } + // 位置情報許可の確認、外部ストレージのPermissionにも対応できるようにしておく + private void checkMultiPermissions(Context context){ + int permissionLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION); // 位置情報の Permission + int permissionExtStorage = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE); // 外部ストレージ書き込みの Permission + // 位置情報の Permission が許可されているか確認 + if (permissionLocation == PackageManager.PERMISSION_GRANTED) { + // 許可済 + startBackgroundService(context); + } else{ + // 未許可 + reqPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); + } + } + + //BackgroundServiceをスタートさせる + public void startBackgroundService(final Context context) { + final Thread thread = new Thread() { + @RequiresApi(api = Build.VERSION_CODES.O) + public void run() { + // サービスの起動 + Intent intentservice = new Intent(context, CosmosBackgroundService.class); + context.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/entities/RequestList.java b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java index 3a5b319..8ae645b 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/RequestList.java +++ b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java @@ -32,6 +32,15 @@ return requests.get(index); } + public Request getRequestById(String rId){ + for(Request request : getRequests()){ + if(request.getrId().equals(rId)){ + return request; + } + } + return null; + } + public void clearRequest() { requests.clear(); } 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 2d59e3d..d222537 100644 --- a/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java +++ b/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java @@ -46,6 +46,7 @@ import java.util.TimeZone; import java.util.Timer; import java.util.TimerTask; +import java.util.UUID; import retrofit2.Call; import retrofit2.Callback; @@ -53,13 +54,15 @@ import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; +import static android.app.Notification.EXTRA_NOTIFICATION_ID; + public class CosmosBackgroundService extends IntentService implements LocationListener { private Context context; private LocationManager locationManager; private static final int MinTime = 1000;/*最小時間間隔*/ private static final float MinDistance = 1;/*最小距離間隔*/ - private boolean isServiceRunning = false; //サービスが起動しているかを確認 + private static boolean isServiceRunning = false; //サービスが起動しているかを確認 private String TAG = CosmosBackgroundService.class.getSimpleName(); private List notifications =null; private CosmosLocation LOC = new CosmosLocation(); @@ -73,6 +76,7 @@ private ArrayList Convenience = new ArrayList<>(); private ArrayList Supermarket = new ArrayList<>(); private AreaInformation areaInfo = null; + private NotificationManager notificationManager; public CosmosBackgroundService() { super("CosmosBackgroundService"); @@ -92,6 +96,10 @@ context = getApplicationContext(); // LocationManager インスタンス生成 locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); + notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); + int importance = NotificationManager.IMPORTANCE_HIGH; + NotificationChannel mChannel = new NotificationChannel("cosmos", "cosmosChannel", importance); + notificationManager.createNotificationChannel(mChannel); } @Override @@ -263,9 +271,38 @@ public void run() { updateAreaInformation(location); this.notifications=searchNotifications(cosmos,location); + sendNotifications(CosmosBackgroundService.this, notifications); } }).start(); + } + + private void sendNotifications(CosmosBackgroundService cosmosBackgroundService, List notifications) { + for (Notification notify: notifications) { + + int notificationId = 1; + //以下はボタンについてだよ + Intent intent = new Intent(cosmosBackgroundService, NotificationDone.class); + //snoozeIntent.setAction(ACTION_NOTIFICATION_OFF); + intent.putExtra(EXTRA_NOTIFICATION_ID, 0); + //以下2行はテスト用。本来はNotificationから取ってくる。 + intent.putExtra("gId", notify.getGroup().getgId()); + intent.putExtra("rId", notify.getRequest().getrId()); + int randamCode = (int)(Math.random()*100000); + PendingIntent pendingIntent = PendingIntent.getBroadcast(cosmosBackgroundService, randamCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); + + android.app.Notification.Action action = new android.app.Notification.Action(R.drawable.notification_icon, "ボタンだよ", pendingIntent); + android.app.Notification notification = new android.app.Notification.Builder(cosmosBackgroundService) + .setContentTitle(notify.getRequest().getProduct()) + .setContentText("通知ないよう") + .setSmallIcon(R.drawable.icon_no) + .setChannelId("cosmos") +// .setGroup("") + .addAction(action) + .build(); + notificationManager.notify(notificationId, notification); + } + } @@ -389,7 +426,7 @@ } } } - if(count == 0) { + if (count == 0) { //retrofitの処理 final Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/") @@ -518,9 +555,8 @@ // } // }); } - - } + public List searchNotifications(Cosmos cosmos, Location location){ double NowLat =location.getLatitude(); diff --git a/app/src/main/java/com/example/cosmosclient/services/CosmosBootReceiver.java b/app/src/main/java/com/example/cosmosclient/services/CosmosBootReceiver.java index 20ae4d2..75a5283 100644 --- a/app/src/main/java/com/example/cosmosclient/services/CosmosBootReceiver.java +++ b/app/src/main/java/com/example/cosmosclient/services/CosmosBootReceiver.java @@ -1,55 +1,16 @@ package com.example.cosmosclient.services; -import android.Manifest; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; -import android.os.Build; -import android.support.annotation.RequiresApi; -import android.support.v4.content.ContextCompat; import android.util.Log; public class CosmosBootReceiver extends BroadcastReceiver { - private static final int REQUEST_MULTI_PERMISSIONS = 101; private String TAG = CosmosBootReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "onReceive"); - // Android 6, API 23以上でペーミッションの確認 - if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()) && Build.VERSION.SDK_INT >= 23) { - checkMultiPermissions(context); - } else{ - // サービスの起動 - startService(context); - } } - // 位置情報許可の確認、外部ストレージのPermissionにも対応できるようにしておく - private void checkMultiPermissions(Context context){ - // 位置情報の Permission - int permissionLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION); - - // 位置情報の Permission が許可されているか確認 - if (permissionLocation == PackageManager.PERMISSION_GRANTED) { - // 許可済 - startService(context); - } else{ - // 未許可 - } - } - - //serviceをスタートさせる - private void startService(final Context context) { - final Thread thread = new Thread() { - @RequiresApi(api = Build.VERSION_CODES.O) - public void run() { - // サービスの起動 - Intent intentservice = new Intent(context, CosmosBackgroundService.class); - context.startForegroundService(intentservice); - } - }; - thread.start(); - } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java b/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java new file mode 100644 index 0000000..af55e7c --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java @@ -0,0 +1,86 @@ +package com.example.cosmosclient.services; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.AddRequestsResponse; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.resources.GroupsRest; + +import java.io.IOException; + +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class NotificationDone extends BroadcastReceiver { + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/") + // .baseUrl("http://10.0.2.2:8080/rest/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + final GroupsRest requestsService = retrofit.create(GroupsRest.class); + + @Override + public void onReceive(Context context, Intent intent) { + Cosmos app = (Cosmos) context.getApplicationContext(); + String gId = intent.getExtras().getString("gId"); + Request editRequest = app.getGroup(gId).getRequestList().getRequestById(intent.getExtras().getString("rId")); + if(gId == null){ + System.out.println("error"); + return; + } + if(editRequest == null){ + System.out.println("cannot find Request"); + return; + } + doneRequest(gId, editRequest); + } + + //引数で受け取ったリクエストを達成する + public void doneRequest(String gId, Request request){ + //Date型のフォーマット設定 + 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 updateRequestCall = requestsService.updateRequest(gId, request.getrId(), request.getIssuer().getuId(), request.getProduct(), deadline, request.getLocation(), true, "token"); + Response response; + try { + response = updateRequestCall.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(); + } + + //onFailureでキャッチできないエラーの処理 +// Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); + } + } catch (IOException e) { + e.printStackTrace(); +// Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show(); + + } + } +} diff --git a/app/src/main/java/com/example/cosmosclient/views/RequestPermissionsActivity.java b/app/src/main/java/com/example/cosmosclient/views/RequestPermissionsActivity.java new file mode 100644 index 0000000..20a29bd --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/RequestPermissionsActivity.java @@ -0,0 +1,20 @@ +package com.example.cosmosclient.views; + +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.support.v7.app.AppCompatActivity; + +public class RequestPermissionsActivity extends AppCompatActivity { + private ActivityCompat.OnRequestPermissionsResultCallback listener = null; + + public void setOnRequestPermissionsResultCallback(ActivityCompat.OnRequestPermissionsResultCallback listener) { + this.listener = listener; + } + + // 結果の受け取り + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + listener.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + +} 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 495d8b8..ba12736 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java @@ -1,20 +1,10 @@ package com.example.cosmosclient.views; -import android.content.Context; -import android.Manifest; import android.content.Intent; -import android.content.pm.PackageManager; -import android.os.Build; import android.os.Handler; -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; @@ -25,9 +15,6 @@ import com.example.cosmosclient.entities.AreaInformation; import com.example.cosmosclient.entities.SigninResponse; import com.example.cosmosclient.resources.UsersRest; -import com.example.cosmosclient.services.CosmosBackgroundService; - -import java.util.ArrayList; import retrofit2.Call; import retrofit2.Callback; @@ -35,29 +22,15 @@ import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; -public class SigninActivity extends AppCompatActivity { +public class SigninActivity extends RequestPermissionsActivity { private boolean uIdEnable; private boolean pwEnable; private Button SigninButton; - private Intent intentservice; - private static final int REQUEST_MULTI_PERMISSIONS = 101; - private AreaInformation area = new AreaInformation(); - - @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); @@ -69,15 +42,6 @@ Cosmos app = (Cosmos) getApplication(); String account = app.getuId(); String token = app.getToken(); - ArrayList key = app.AreaInfoGetKey(); - - - - if(key.size() != 0){ - for(int i = 0;i call, Response response) { if (response.isSuccessful()) { - if(response.body() == null){ + if (response.body() == null){ //パスワードが違う際、アプリが落ちてしまうため Toast.makeText(SigninActivity.this, "パスワードが違います",Toast.LENGTH_LONG).show(); - }else{ + } else { SigninResponse result = response.body(); //app/Cosmosに情報保存 @@ -150,8 +113,7 @@ "ログインしました", Toast.LENGTH_SHORT).show(); finish(); } - - }else{ + } else { //onFailureでキャッチできないエラーの処理 Toast.makeText(SigninActivity.this, "通信エラー",Toast.LENGTH_SHORT).show(); @@ -165,7 +127,6 @@ Toast.makeText(SigninActivity.this, "ユーザIDもしくはパスワードが間違っています",Toast.LENGTH_SHORT).show(); } - }); } }); @@ -217,9 +178,9 @@ } break; case R.id.PasswordText: - if(s.length()>0){ + if (s.length()>0){ pwEnable=true; - }else{ + } else{ pwEnable=false; } break; @@ -232,95 +193,5 @@ } } } - // 結果の受け取り - @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, CosmosBackgroundService.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 bafa874..8db61a1 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -216,23 +216,23 @@ @Override public void afterTextChanged(Editable s){ + final int maxStringLength = 21; switch(view.getId()) { case R.id.NameText: - if (s.length() > 0) { + if (0 < s.length() && s.length() < maxStringLength){ nameEnable = true; - } else { - nameEnable = false; + } else { nameEnable = false; } break; case R.id.PasswordText: - if(s.length()>0){ + if(0 < s.length() && s.length() < maxStringLength){ pwEnable=true; }else{ pwEnable=false; } break; case R.id.ConfirmPasswordText: - if(s.length()>0){ + if(0 < s.length() && s.length() < maxStringLength){ cpwEnable=true; }else{ cpwEnable=false; diff --git a/app/src/main/res/drawable/icon_no.png b/app/src/main/res/drawable/icon_no.png new file mode 100644 index 0000000..807f3e4 --- /dev/null +++ b/app/src/main/res/drawable/icon_no.png Binary files differ diff --git a/app/src/main/res/drawable/notification_icon.png b/app/src/main/res/drawable/notification_icon.png new file mode 100644 index 0000000..f9a5e8b --- /dev/null +++ b/app/src/main/res/drawable/notification_icon.png Binary files differ diff --git a/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java b/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java new file mode 100644 index 0000000..79a5bbe --- /dev/null +++ b/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java @@ -0,0 +1,28 @@ +package com.example.cosmosclient; + +import com.example.cosmosclient.entities.Feature; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.entities.UserJsonforRequests; +import com.example.cosmosclient.services.Notification; +import com.example.cosmosclient.services.NotificationDone; + +import java.util.Date; +import java.util.List; + +public class NotificationDoneTestMain { + public static void main(String[] args) { + //以下の変数は、変更したいリクエストに合わせて変更する必要があります。 + String rid = "a87c2716-0174-40bc-bb41-a1ce8b6009bb"; + String rUri = "http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rset/groups/909221c1-c343-405e-8b39-f0dbed60e48b/requests/a87c2716-0174-40bc-bb41-a1ce8b6009bb"; + String product = "mimiz"; + int location = 20501; + String gid = "909221c1-c343-405e-8b39-f0dbed60e48b"; + String issuerUid = "d3c73732-1287-4fa4-bb74-c9342be81fde"; + + NotificationDone notificationDone = new NotificationDone(); +// Notification notification = new Notification(new Request(rid, rUri, product, new Date(), new Date(), location, "name", false), new Group(gid, "uri", "name", "uId"), null); + Request request = new Request(rid, rUri, product, new Date(), new Date(), location, "name", true); + notificationDone.doneRequest(gid, request); + } +} \ No newline at end of file