Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d92652385 | ||
|
|
1cf5a920b8 | ||
|
|
e4431e1218 | ||
|
|
751d47aee7 | ||
|
|
25879c4ad5 | ||
|
|
e906343619 | ||
|
|
f21f684f17 |
No files matched your search
@@ -31,6 +31,9 @@ public class HomeFragment extends Fragment implements OnEventListener {
|
||||
private String str_key;
|
||||
private String mParam2;
|
||||
|
||||
final String GET_ON = "\n乗車状態";
|
||||
final String GET_OFF = "\n降車状態";
|
||||
|
||||
|
||||
public HomeFragment() {
|
||||
// Required empty public constructor
|
||||
@@ -107,6 +110,9 @@ public class HomeFragment extends Fragment implements OnEventListener {
|
||||
transaction.commit();
|
||||
}
|
||||
|
||||
/**
|
||||
* 乗車状態の画面を切り替える
|
||||
*/
|
||||
private boolean updateUiState(boolean isInCar) {
|
||||
Log.d("HomeFragment", "updateUiState: called");
|
||||
// Init
|
||||
@@ -124,29 +130,31 @@ public class HomeFragment extends Fragment implements OnEventListener {
|
||||
updateUiState(isInCar);
|
||||
return false;
|
||||
}
|
||||
String get_on = "\n乗車状態";
|
||||
String get_off = "\n降車状態";
|
||||
|
||||
if (!isInCar) {
|
||||
//乗車状態にする
|
||||
fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style_orange, null));
|
||||
tv.setText(get_on);
|
||||
tv.setText(GET_ON);
|
||||
} else {
|
||||
//降車状態にする
|
||||
fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
|
||||
tv.setText(get_off);
|
||||
tv.setText(GET_OFF);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bluetoothの接続状態の画面を切り替える
|
||||
*/
|
||||
private boolean updateBluetoothSituation(Boolean BluetoothConnect) {
|
||||
FrameLayout frameLayout;
|
||||
TextView textView;
|
||||
ImageView imageView;
|
||||
try {
|
||||
frameLayout = requireView().findViewById(R.id.situation_bg2);
|
||||
textView = requireView().findViewById(R.id.Bluetoothsituation);
|
||||
imageView = requireView().findViewById(R.id.Bluetoothsituationimage);
|
||||
frameLayout = requireView().findViewById(R.id.situation_bg_bluetooth);
|
||||
textView = requireView().findViewById(R.id.BluetoothSituation);
|
||||
imageView = requireView().findViewById(R.id.BluetoothSituationImage);
|
||||
} catch (NullPointerException e) {
|
||||
Log.d("HomeFragment", "updateUiState: view is null");
|
||||
return false;
|
||||
@@ -156,17 +164,17 @@ public class HomeFragment extends Fragment implements OnEventListener {
|
||||
updateBluetoothSituation(BluetoothConnect);
|
||||
return false;
|
||||
}
|
||||
String connect = "接続中";
|
||||
String disconnect = "切断中";
|
||||
final String CONNECT = "接続中";
|
||||
final String DISCONNECT = "切断中";
|
||||
if (BluetoothConnect) {
|
||||
//接続状態にする
|
||||
frameLayout.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style_orange, null));
|
||||
textView.setText(connect);
|
||||
textView.setText(CONNECT);
|
||||
imageView.setVisibility(View.GONE);
|
||||
} else {
|
||||
//降車状態にする
|
||||
//切断状態にする
|
||||
frameLayout.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
|
||||
textView.setText(disconnect);
|
||||
textView.setText(DISCONNECT);
|
||||
imageView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ public class MainActivity extends AppCompatActivity {
|
||||
public static final String TAG = "InspirationQuote";
|
||||
|
||||
|
||||
|
||||
private final ActivityResultLauncher<ScanOptions> QrLauncher = registerForActivityResult(
|
||||
new ScanContract(),
|
||||
result -> {
|
||||
@@ -76,10 +75,9 @@ public class MainActivity extends AppCompatActivity {
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
//Bluetooth接続判定用
|
||||
SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(this);
|
||||
SharedPreferences.Editor e=pref.edit();
|
||||
e.putBoolean("connection_status",false);
|
||||
|
||||
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
SharedPreferences.Editor e = pref.edit();
|
||||
e.putBoolean("connection_status", false);
|
||||
|
||||
|
||||
if (!hasPermissions()) {
|
||||
@@ -187,7 +185,6 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private boolean hasPermissions() {
|
||||
@@ -229,22 +226,24 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* FireBaseのIDの取得
|
||||
*/
|
||||
public void firebaseLink() {//Firebaseのドキュメントの取得
|
||||
//共有プリファレンス全体の準備
|
||||
SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE);
|
||||
String IdPref = sharedPreferences.getString("ID", null);////アプリに記録されているIDの取得
|
||||
String IdPref = sharedPreferences.getString("ID", null);//アプリに記録されているIDの取得
|
||||
if (IdPref == null) {//FireBaseのIDがアプリに登録されているとき
|
||||
Log.d("onResume", "ID not initialized.");
|
||||
} else {
|
||||
mDocRef = FirebaseFirestore.getInstance().document("status/" + IdPref);//現在の位置を取得
|
||||
initNotification(mDocRef);//現在の位置を引数に initNotification()を処理
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetReported() {//FireBaseのisReportedをfalseに初期化するメソッド
|
||||
/**
|
||||
* FireBaseのisReportedをfalseに初期化するメソッド
|
||||
*/
|
||||
public void ResetReported() {
|
||||
//共有プリファレンス全体の準備
|
||||
SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
|
||||
String IdPref = sharedPreferences.getString("ID", null);//アプリに記録されているIDの取得
|
||||
@@ -255,25 +254,32 @@ public class MainActivity extends AppCompatActivity {
|
||||
isReported.update("isReported", false).addOnSuccessListener(unused -> Log.d(TAG, "DocumentSnapshot successfully updated!")).addOnFailureListener(e -> Log.w(TAG, "Error updating document", e));
|
||||
}
|
||||
|
||||
/**
|
||||
* 乗車状態の変更
|
||||
*/
|
||||
public void changeIsInCar() {
|
||||
//共有プリファレンス全体の準備
|
||||
SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
|
||||
//共有プリファレンス 書き込みの準備
|
||||
SharedPreferences.Editor E = sharedPreferences.edit();
|
||||
String IdPref = sharedPreferences.getString("ID", null);//アプリに記録されているIDの取得
|
||||
Boolean change=sharedPreferences.getBoolean("change",false);
|
||||
Boolean change = sharedPreferences.getBoolean("change", false);
|
||||
db = FirebaseFirestore.getInstance();//Firebaseとの紐づけ
|
||||
DocumentReference isReported = db.collection("status").document(IdPref);//更新するドキュメントとの紐づけ
|
||||
Map<String, Boolean> DEFAULT_ITEM = new HashMap<>();//mapの宣言
|
||||
if (!change) {
|
||||
//isInCarをtrueに更新
|
||||
E.putBoolean("change",true);
|
||||
}else{
|
||||
E.putBoolean("change",false);
|
||||
E.putBoolean("change", true);
|
||||
} else {
|
||||
E.putBoolean("change", false);
|
||||
}
|
||||
isReported.update("isInCar", change).addOnSuccessListener(unused -> Log.d(TAG, "DocumentSnapshot successfully updated!")).addOnFailureListener(e -> Log.w(TAG, "Error updating document", e));
|
||||
E.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* 第三者通知に関する設定のメソッド
|
||||
*/
|
||||
public void NotificationSetting() {//通知に関する設定の処理を行うメソッド
|
||||
int importance = NotificationManager.IMPORTANCE_DEFAULT;
|
||||
//通知チャネルの実装
|
||||
@@ -282,9 +288,11 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
NotificationManager notificationManager = getSystemService(NotificationManager.class);
|
||||
notificationManager.createNotificationChannel(channel);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 第三者通知を行うメソッド
|
||||
*/
|
||||
public void Notification(Context context) {//実際に通知を行うメソッド
|
||||
final String CHANNEL_ID = "my_channel_id";
|
||||
// 通知がクリックされたときに送信されるIntent
|
||||
@@ -380,7 +388,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
|
||||
NotificationManager notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
|
||||
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
|
||||
return;
|
||||
}
|
||||
@@ -388,9 +396,6 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void Bluetooth_status() {
|
||||
IntentFilter intentFilter = new IntentFilter();
|
||||
intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
|
||||
@@ -413,8 +418,8 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
SharedPreferences pref=getSharedPreferences("Bluetooth_situation",MODE_PRIVATE);
|
||||
SharedPreferences.Editor e=pref.edit();
|
||||
SharedPreferences pref = getSharedPreferences("Bluetooth_situation", MODE_PRIVATE);
|
||||
SharedPreferences.Editor e = pref.edit();
|
||||
String action = intent.getAction(); // may need to chain this to a recognizing function
|
||||
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
Boolean isInCar = pref.getBoolean("isInCarPref", false);
|
||||
@@ -437,40 +442,44 @@ public class MainActivity extends AppCompatActivity {
|
||||
if (deviceHardwareAddress.equals(registeredId)) {
|
||||
//登録済みのデバイスだったときの処理
|
||||
Log.d("BT_Judge", "登録済み");
|
||||
e.putBoolean("connection_status",true);
|
||||
e.putBoolean("connection_status", true);
|
||||
|
||||
} else{
|
||||
} else {
|
||||
//登録していないデバイスだったときの処理
|
||||
Log.d("BT_Judge", "未登録");
|
||||
e.putBoolean("connection_status",false);
|
||||
e.putBoolean("connection_status", false);
|
||||
}
|
||||
e.apply();
|
||||
|
||||
} else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)&&!isInCar) {//bluetoothが切断されたときに乗車状態のとき
|
||||
|
||||
//Do something if disconnected
|
||||
}else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//bluetoothが切断されたときに乗車状態のとき
|
||||
//
|
||||
// //Do something if disconnected
|
||||
//デバイスが切断されたときの処理
|
||||
changeBluetooth(false);
|
||||
if (deviceHardwareAddress.equals(registeredId)) {
|
||||
// 5分待機する
|
||||
Handler handler = new Handler();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)&&!isInCar) {//その後bluetoothを再接続したり降車状態になったりしていない=置き去りが発生した可能性大
|
||||
NotificationBluetooth(getApplicationContext());//通知を行うメソッド
|
||||
}}
|
||||
|
||||
}, 5 *60*1000); // 5分をミリ秒に変換
|
||||
}
|
||||
}else {
|
||||
Log.d("BT", "Device disconnected");
|
||||
// if (deviceHardwareAddress.equals(registeredId)) {
|
||||
// // 5分待機する
|
||||
// Handler handler = new Handler();
|
||||
// handler.postDelayed(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//その後bluetoothを再接続したり降車状態になったりしていない=置き去りが発生した可能性大
|
||||
// NotificationBluetooth(getApplicationContext());//通知を行うメソッド
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }, 5 * 1000); // 5分をミリ秒に変換
|
||||
// }
|
||||
// } else {
|
||||
// Log.d("BT", " Device disconnected");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public void changeBluetooth(boolean actual){
|
||||
getSharedPreferences("Bluetooth_situation",MODE_PRIVATE).edit().putBoolean("status",actual).apply();
|
||||
/**
|
||||
* Bluetoothの接続状態を変更するメソッド
|
||||
*/
|
||||
public void changeBluetooth(boolean actual) {
|
||||
getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).edit().putBoolean("status", actual).apply();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import androidx.core.app.NotificationManagerCompat;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
import com.google.firebase.firestore.FirebaseFirestore;
|
||||
|
||||
import org.checkerframework.checker.index.qual.LengthOf;
|
||||
|
||||
public class TestService extends Service {
|
||||
|
||||
private final Handler handler = new Handler();
|
||||
@@ -73,7 +75,7 @@ public class TestService extends Service {
|
||||
private static final NotificationContent REPORTED_NOTIFICATION =
|
||||
new NotificationContent("子供の置き去りをしていませんか?", "第三者からの通報が行われました。", REPORTED_CHANNEL_ID, 2);
|
||||
private static final NotificationContent BLUETOOTH_NOTIFICATION =
|
||||
new NotificationContent("子供の置き去りをしていませんか?", "Bluetoothと車の切断から5分が経過しました", BT_ALERT_CHANNEL_ID, 3);
|
||||
new NotificationContent("子供の置き去りをしていませんか?🐈", "Bluetoothと車の切断から5分が経過しました", BT_ALERT_CHANNEL_ID, 3);
|
||||
|
||||
private String userId = null;
|
||||
|
||||
@@ -315,13 +317,18 @@ public class TestService extends Service {
|
||||
Log.d("BT_Judge", "Not registered device");
|
||||
return;
|
||||
}
|
||||
boolean isInCar = getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).getBoolean("isInCarPref", false);
|
||||
boolean isInCar = !getSharedPreferences("app_situation", MODE_PRIVATE).getBoolean("change", false);
|
||||
if (!isInCar) {
|
||||
Log.d("BT_Judge", "Not in car");
|
||||
return;
|
||||
}
|
||||
// -----------------------------------------------------
|
||||
|
||||
// debug log
|
||||
Log.d("BT", "Bluetooth device found: " + deviceHardwareAddress);
|
||||
Log.d("BT", "Registered device: " + registeredId);
|
||||
Log.d("BT", "Is in car: " + isInCar);
|
||||
|
||||
String action = intent.getAction(); // may need to chain this to a recognizing function
|
||||
if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
|
||||
// bluetoothが切断されたときに乗車状態のとき
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/situation_bg2"
|
||||
android:id="@+id/situation_bg_bluetooth"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
@@ -58,7 +58,7 @@
|
||||
android:background="@drawable/frame_style">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/Bluetoothsituation"
|
||||
android:id="@+id/BluetoothSituation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
@@ -75,7 +75,7 @@
|
||||
android:textAlignment="center" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/Bluetoothsituationimage"
|
||||
android:id="@+id/BluetoothSituationImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="100dp"
|
||||
android:layout_marginTop="50dp"
|
||||
|
||||
Reference in new issue
Block a user