Bluetoothの切断と同時に通知が送られるようにしました
This commit is contained in:
parent
944f08f988
commit
9ec7f37f4a
|
@ -48,7 +48,7 @@ public class TestService extends Service {
|
||||||
|
|
||||||
public static final String TAG = "InspirationQuote";
|
public static final String TAG = "InspirationQuote";
|
||||||
|
|
||||||
public PeriodicTaskManager periodicTaskManager;
|
;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -73,7 +73,7 @@ public class TestService extends Service {
|
||||||
|
|
||||||
private void initNotification(DocumentReference mDocRef) {//サイト上で押されたボタンの管理
|
private void initNotification(DocumentReference mDocRef) {//サイト上で押されたボタンの管理
|
||||||
// PeriodicTaskManagerのインスタンス化
|
// PeriodicTaskManagerのインスタンス化
|
||||||
periodicTaskManager = new PeriodicTaskManager();
|
|
||||||
// 共有プリファレンス全体の準備
|
// 共有プリファレンス全体の準備
|
||||||
SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE);
|
SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE);
|
||||||
//車の乗り降りを管理するtrue=乗車、false=降車
|
//車の乗り降りを管理するtrue=乗車、false=降車
|
||||||
|
@ -174,7 +174,7 @@ public class TestService extends Service {
|
||||||
}
|
}
|
||||||
notificationManager.notify(R.string.app_name, builder.build());//通知の表示
|
notificationManager.notify(R.string.app_name, builder.build());//通知の表示
|
||||||
}
|
}
|
||||||
public void NotificationBluetooth(Context context, int time) {//実際に通知を行うメソッド
|
public void NotificationBluetooth(Context context) {//実際に通知を行うメソッド
|
||||||
final String CHANNEL_ID = "my_channel_id";
|
final String CHANNEL_ID = "my_channel_id";
|
||||||
// 通知がクリックされたときに送信されるIntent
|
// 通知がクリックされたときに送信されるIntent
|
||||||
Intent intent = new Intent(context, MainActivity.class);
|
Intent intent = new Intent(context, MainActivity.class);
|
||||||
|
@ -189,7 +189,7 @@ public class TestService extends Service {
|
||||||
@SuppressLint("NotificationTrampoline") NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "CHANNEL_ID")
|
@SuppressLint("NotificationTrampoline") NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "CHANNEL_ID")
|
||||||
.setSmallIcon(android.R.drawable.ic_menu_info_details)
|
.setSmallIcon(android.R.drawable.ic_menu_info_details)
|
||||||
.setContentTitle("子供の置き去りをしていませんか?")//通知のタイトル
|
.setContentTitle("子供の置き去りをしていませんか?")//通知のタイトル
|
||||||
.setContentText("Bluetoothと車の切断から"+time+"分が経過しました")//通知の本文
|
.setContentText("Bluetoothと車の切断から5分が経過しました")//通知の本文
|
||||||
.setContentIntent(pendingIntent)//通知をタップするとActivityへ移動する
|
.setContentIntent(pendingIntent)//通知をタップするとActivityへ移動する
|
||||||
.setAutoCancel(true)//通知をタップすると削除する
|
.setAutoCancel(true)//通知をタップすると削除する
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH) // プライオリティを高く設定
|
.setPriority(NotificationCompat.PRIORITY_HIGH) // プライオリティを高く設定
|
||||||
|
@ -220,60 +220,10 @@ public class TestService extends Service {
|
||||||
}
|
}
|
||||||
notificationManager.notify(R.string.app_name, builder.build());//通知の表示
|
notificationManager.notify(R.string.app_name, builder.build());//通知の表示
|
||||||
}
|
}
|
||||||
public class PeriodicTaskManager {//Bluetoothの切断後に乗車状態にならなかった場合に5分毎に通知を送るメソッド
|
|
||||||
|
|
||||||
private static final long INTERVAL = 5 * 1000; //300秒
|
|
||||||
private final Handler handler;
|
|
||||||
private final Runnable periodicTask;
|
|
||||||
|
|
||||||
public PeriodicTaskManager() {
|
|
||||||
|
|
||||||
handler = new Handler(Looper.getMainLooper());
|
|
||||||
periodicTask = new Runnable() {
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
|
|
||||||
//共有プリファレンス全体の準備
|
|
||||||
SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE);
|
|
||||||
|
|
||||||
int time=sharedPreferences.getInt("time",0);
|
|
||||||
//共有プリファレンス 書き込みの準備
|
|
||||||
SharedPreferences.Editor E = sharedPreferences.edit();
|
|
||||||
if(time==0) {//Bluetooth切断からの時間経過(5分刻み)
|
|
||||||
E.putInt("time",5);
|
|
||||||
E.apply();;
|
|
||||||
}else {
|
|
||||||
E.putInt("time",time+5);
|
|
||||||
E.apply();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 5分毎に実行される処理
|
|
||||||
NotificationBluetooth(getApplicationContext(),time);
|
|
||||||
Log.d("PeriodicTask", "5分後に処理を実行します");
|
|
||||||
|
|
||||||
handler.postDelayed(this, INTERVAL);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void startPeriodicTask() {
|
|
||||||
// 最初の実行
|
|
||||||
handler.postDelayed(periodicTask,INTERVAL);//一回目は5分後に行う
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stopPeriodicTask() {
|
|
||||||
//共有プリファレンス全体の準備
|
|
||||||
SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE);
|
|
||||||
|
|
||||||
int time=sharedPreferences.getInt("time",0);
|
|
||||||
//共有プリファレンス 書き込みの準備
|
|
||||||
SharedPreferences.Editor E = sharedPreferences.edit();
|
|
||||||
E.putInt("time",0);
|
|
||||||
E.apply();
|
|
||||||
// 定期的な処理の停止
|
|
||||||
handler.removeCallbacks(periodicTask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void Bluetooth_status() {
|
public void Bluetooth_status() {
|
||||||
|
@ -303,7 +253,6 @@ public class TestService extends Service {
|
||||||
String action = intent.getAction(); // may need to chain this to a recognizing function
|
String action = intent.getAction(); // may need to chain this to a recognizing function
|
||||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||||
|
|
||||||
// HomeFragment homeFragment=new HomeFragment();
|
|
||||||
|
|
||||||
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
|
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
|
||||||
Log.d("BT", "No permission to connect bluetooth devices");
|
Log.d("BT", "No permission to connect bluetooth devices");
|
||||||
|
@ -334,6 +283,8 @@ public class TestService extends Service {
|
||||||
Log.d("BT", "Device disconnected");
|
Log.d("BT", "Device disconnected");
|
||||||
e.putBoolean("connection_status",false);
|
e.putBoolean("connection_status",false);
|
||||||
e.apply();
|
e.apply();
|
||||||
|
NotificationBluetooth(getApplicationContext());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -341,11 +292,7 @@ public class TestService extends Service {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public void bluetoothTest() {
|
|
||||||
// SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
|
||||||
// Boolean b = pref.getBoolean("connection_status", false);
|
|
||||||
// Log.d("bluetooth", b.toString());
|
|
||||||
// }
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public IBinder onBind(Intent intent) {
|
public IBinder onBind(Intent intent) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user