Compare commits
	
		
			No commits in common. "16265d5d31ee3e35b44591e61afb532fe33176ea" and "e906343619f3397f0b75cc3e10355a19398bf299" have entirely different histories.
		
	
	
		
			16265d5d31
			...
			e906343619
		
	
		
| 
						 | 
					@ -35,7 +35,7 @@
 | 
				
			||||||
                <category android:name="android.intent.category.LAUNCHER" />
 | 
					                <category android:name="android.intent.category.LAUNCHER" />
 | 
				
			||||||
            </intent-filter>
 | 
					            </intent-filter>
 | 
				
			||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
        <service android:name=".SurveillanceService" />
 | 
					        <service android:name=".TestService" />
 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
| 
						 | 
					@ -31,9 +31,6 @@ public class HomeFragment extends Fragment implements OnEventListener {
 | 
				
			||||||
    private String str_key;
 | 
					    private String str_key;
 | 
				
			||||||
    private String mParam2;
 | 
					    private String mParam2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    final String GET_ON = "\n乗車状態";
 | 
					 | 
				
			||||||
    final String GET_OFF = "\n降車状態";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public HomeFragment() {
 | 
					    public HomeFragment() {
 | 
				
			||||||
        // Required empty public constructor
 | 
					        // Required empty public constructor
 | 
				
			||||||
| 
						 | 
					@ -110,9 +107,6 @@ public class HomeFragment extends Fragment implements OnEventListener {
 | 
				
			||||||
        transaction.commit();
 | 
					        transaction.commit();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 乗車状態の画面を切り替える
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private boolean updateUiState(boolean isInCar) {
 | 
					    private boolean updateUiState(boolean isInCar) {
 | 
				
			||||||
        Log.d("HomeFragment", "updateUiState: called");
 | 
					        Log.d("HomeFragment", "updateUiState: called");
 | 
				
			||||||
        // Init
 | 
					        // Init
 | 
				
			||||||
| 
						 | 
					@ -130,15 +124,16 @@ public class HomeFragment extends Fragment implements OnEventListener {
 | 
				
			||||||
            updateUiState(isInCar);
 | 
					            updateUiState(isInCar);
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        String get_on = "\n乗車状態";
 | 
				
			||||||
 | 
					        String get_off = "\n降車状態";
 | 
				
			||||||
        if (!isInCar) {
 | 
					        if (!isInCar) {
 | 
				
			||||||
            //乗車状態にする
 | 
					            //乗車状態にする
 | 
				
			||||||
            fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style_orange, null));
 | 
					            fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style_orange, null));
 | 
				
			||||||
            tv.setText(GET_ON);
 | 
					            tv.setText(get_on);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            //降車状態にする
 | 
					            //降車状態にする
 | 
				
			||||||
            fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
 | 
					            fl.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
 | 
				
			||||||
            tv.setText(GET_OFF);
 | 
					            tv.setText(get_off);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
| 
						 | 
					@ -172,7 +167,7 @@ public class HomeFragment extends Fragment implements OnEventListener {
 | 
				
			||||||
            textView.setText(CONNECT);
 | 
					            textView.setText(CONNECT);
 | 
				
			||||||
            imageView.setVisibility(View.GONE);
 | 
					            imageView.setVisibility(View.GONE);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            //切断状態にする
 | 
					            //降車状態にする
 | 
				
			||||||
            frameLayout.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
 | 
					            frameLayout.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.frame_style, null));
 | 
				
			||||||
            textView.setText(DISCONNECT);
 | 
					            textView.setText(DISCONNECT);
 | 
				
			||||||
            imageView.setVisibility(View.VISIBLE);
 | 
					            imageView.setVisibility(View.VISIBLE);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@ import android.content.pm.PackageManager;
 | 
				
			||||||
import android.graphics.Color;
 | 
					import android.graphics.Color;
 | 
				
			||||||
import android.os.Build;
 | 
					import android.os.Build;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.os.Handler;
 | 
				
			||||||
import android.os.Vibrator;
 | 
					import android.os.Vibrator;
 | 
				
			||||||
import android.preference.PreferenceManager;
 | 
					import android.preference.PreferenceManager;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
| 
						 | 
					@ -133,7 +134,7 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        registerReceiver(receiver, intentFilter);
 | 
					        registerReceiver(receiver, intentFilter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        startForegroundService(new Intent(this, SurveillanceService.class));
 | 
					        startForegroundService(new Intent(this, TestService.class));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,10 +240,8 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
            initNotification(mDocRef);//現在の位置を引数に initNotification()を処理
 | 
					            initNotification(mDocRef);//現在の位置を引数に initNotification()を処理
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					
 | 
				
			||||||
     * FireBaseのisReportedをfalseに初期化するメソッド
 | 
					    public void ResetReported() {//FireBaseのisReportedをfalseに初期化するメソッド
 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void ResetReported() {
 | 
					 | 
				
			||||||
        //共有プリファレンス全体の準備
 | 
					        //共有プリファレンス全体の準備
 | 
				
			||||||
        SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
 | 
					        SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
 | 
				
			||||||
        String IdPref = sharedPreferences.getString("ID", null);//アプリに記録されているIDの取得
 | 
					        String IdPref = sharedPreferences.getString("ID", null);//アプリに記録されているIDの取得
 | 
				
			||||||
| 
						 | 
					@ -253,9 +252,6 @@ 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));
 | 
					        isReported.update("isReported", false).addOnSuccessListener(unused -> Log.d(TAG, "DocumentSnapshot successfully updated!")).addOnFailureListener(e -> Log.w(TAG, "Error updating document", e));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 乗車状態の変更
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void changeIsInCar() {
 | 
					    public void changeIsInCar() {
 | 
				
			||||||
        //共有プリファレンス全体の準備
 | 
					        //共有プリファレンス全体の準備
 | 
				
			||||||
        SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
 | 
					        SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences("app_situation", MODE_PRIVATE);
 | 
				
			||||||
| 
						 | 
					@ -276,9 +272,6 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
        E.apply();
 | 
					        E.apply();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 第三者通知に関する設定のメソッド
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void NotificationSetting() {//通知に関する設定の処理を行うメソッド
 | 
					    public void NotificationSetting() {//通知に関する設定の処理を行うメソッド
 | 
				
			||||||
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
 | 
					        int importance = NotificationManager.IMPORTANCE_DEFAULT;
 | 
				
			||||||
        //通知チャネルの実装
 | 
					        //通知チャネルの実装
 | 
				
			||||||
| 
						 | 
					@ -287,11 +280,9 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
 | 
					        NotificationManager notificationManager = getSystemService(NotificationManager.class);
 | 
				
			||||||
        notificationManager.createNotificationChannel(channel);
 | 
					        notificationManager.createNotificationChannel(channel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 第三者通知を行うメソッド
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void Notification(Context context) {//実際に通知を行うメソッド
 | 
					    public void Notification(Context context) {//実際に通知を行うメソッド
 | 
				
			||||||
        final String CHANNEL_ID = "my_channel_id";
 | 
					        final String CHANNEL_ID = "my_channel_id";
 | 
				
			||||||
        // 通知がクリックされたときに送信されるIntent
 | 
					        // 通知がクリックされたときに送信されるIntent
 | 
				
			||||||
| 
						 | 
					@ -450,33 +441,30 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                e.apply();
 | 
					                e.apply();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//bluetoothが切断されたときに乗車状態のとき
 | 
					            } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//bluetoothが切断されたときに乗車状態のとき
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
//                //Do something if disconnected
 | 
					                //Do something if disconnected
 | 
				
			||||||
                //デバイスが切断されたときの処理
 | 
					                //デバイスが切断されたときの処理
 | 
				
			||||||
                changeBluetooth(false);
 | 
					                changeBluetooth(false);
 | 
				
			||||||
//                if (deviceHardwareAddress.equals(registeredId)) {
 | 
					                if (deviceHardwareAddress.equals(registeredId)) {
 | 
				
			||||||
//                    // 5分待機する
 | 
					                    // 5分待機する
 | 
				
			||||||
//                    Handler handler = new Handler();
 | 
					                    Handler handler = new Handler();
 | 
				
			||||||
//                    handler.postDelayed(new Runnable() {
 | 
					                    handler.postDelayed(new Runnable() {
 | 
				
			||||||
//                        @Override
 | 
					                        @Override
 | 
				
			||||||
//                        public void run() {
 | 
					                        public void run() {
 | 
				
			||||||
//                            if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//その後bluetoothを再接続したり降車状態になったりしていない=置き去りが発生した可能性大
 | 
					                            if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && !isInCar) {//その後bluetoothを再接続したり降車状態になったりしていない=置き去りが発生した可能性大
 | 
				
			||||||
//                                NotificationBluetooth(getApplicationContext());//通知を行うメソッド
 | 
					                                NotificationBluetooth(getApplicationContext());//通知を行うメソッド
 | 
				
			||||||
//                            }
 | 
					                            }
 | 
				
			||||||
//                        }
 | 
					                        }
 | 
				
			||||||
//
 | 
					
 | 
				
			||||||
//                    }, 5 * 1000); // 5分をミリ秒に変換
 | 
					                    }, 5 * 1000); // 5分をミリ秒に変換
 | 
				
			||||||
//                }
 | 
					                }
 | 
				
			||||||
//            } else {
 | 
					            } else {
 | 
				
			||||||
//                Log.d("BT", " Device disconnected");
 | 
					                Log.d("BT", " Device disconnected");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Bluetoothの接続状態を変更するメソッド
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public void changeBluetooth(boolean actual) {
 | 
					    public void changeBluetooth(boolean actual) {
 | 
				
			||||||
        getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).edit().putBoolean("status", actual).apply();
 | 
					        getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).edit().putBoolean("status", actual).apply();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,6 @@ package com.example.childguard;
 | 
				
			||||||
import static android.content.ContentValues.TAG;
 | 
					import static android.content.ContentValues.TAG;
 | 
				
			||||||
import static android.content.Context.MODE_PRIVATE;
 | 
					import static android.content.Context.MODE_PRIVATE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import android.content.Context;
 | 
					 | 
				
			||||||
import android.content.Intent;
 | 
					 | 
				
			||||||
import android.content.SharedPreferences;
 | 
					import android.content.SharedPreferences;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
| 
						 | 
					@ -97,7 +95,6 @@ public class SettingFragment extends Fragment {
 | 
				
			||||||
                            SharedPreferences.Editor editor = sharedPreferences1.edit();
 | 
					                            SharedPreferences.Editor editor = sharedPreferences1.edit();
 | 
				
			||||||
                            editor.putString("ID", documentReference.getId());
 | 
					                            editor.putString("ID", documentReference.getId());
 | 
				
			||||||
                            editor.apply();
 | 
					                            editor.apply();
 | 
				
			||||||
                            startTestService();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            Toast.makeText(getActivity(), "初回登録", Toast.LENGTH_SHORT).show();
 | 
					                            Toast.makeText(getActivity(), "初回登録", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                            getParentFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.fragmentContainerView, GenerateQrFragment.newInstance(documentReference.getId())).commit();
 | 
					                            getParentFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.fragmentContainerView, GenerateQrFragment.newInstance(documentReference.getId())).commit();
 | 
				
			||||||
| 
						 | 
					@ -109,11 +106,4 @@ public class SettingFragment extends Fragment {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    private void startTestService() {
 | 
					 | 
				
			||||||
        Context context = getContext();
 | 
					 | 
				
			||||||
        if (context != null) {
 | 
					 | 
				
			||||||
            Intent serviceIntent = new Intent(context, SurveillanceService.class);
 | 
					 | 
				
			||||||
            context.startForegroundService(serviceIntent);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ import androidx.core.app.NotificationManagerCompat;
 | 
				
			||||||
import com.google.firebase.firestore.DocumentReference;
 | 
					import com.google.firebase.firestore.DocumentReference;
 | 
				
			||||||
import com.google.firebase.firestore.FirebaseFirestore;
 | 
					import com.google.firebase.firestore.FirebaseFirestore;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class SurveillanceService extends Service {
 | 
					public class TestService extends Service {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Handler handler = new Handler();
 | 
					    private final Handler handler = new Handler();
 | 
				
			||||||
    private Runnable notificationRunnable;
 | 
					    private Runnable notificationRunnable;
 | 
				
			||||||
| 
						 | 
					@ -73,13 +73,12 @@ public class SurveillanceService extends Service {
 | 
				
			||||||
    private static final NotificationContent REPORTED_NOTIFICATION =
 | 
					    private static final NotificationContent REPORTED_NOTIFICATION =
 | 
				
			||||||
            new NotificationContent("子供の置き去りをしていませんか?", "第三者からの通報が行われました。", REPORTED_CHANNEL_ID, 2);
 | 
					            new NotificationContent("子供の置き去りをしていませんか?", "第三者からの通報が行われました。", REPORTED_CHANNEL_ID, 2);
 | 
				
			||||||
    private static final NotificationContent BLUETOOTH_NOTIFICATION =
 | 
					    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;
 | 
					    private String userId = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int onStartCommand(Intent intent, int flags, int startId) {
 | 
					    public int onStartCommand(Intent intent, int flags, int startId) {
 | 
				
			||||||
        Log.d(TAG, "onStartCommand: ");
 | 
					 | 
				
			||||||
        this.userId = getSharedPreferences("app_situation", MODE_PRIVATE).getString("ID", null);
 | 
					        this.userId = getSharedPreferences("app_situation", MODE_PRIVATE).getString("ID", null);
 | 
				
			||||||
        if (this.userId == null) {
 | 
					        if (this.userId == null) {
 | 
				
			||||||
            Log.d("onResume", "ID not initialized.");
 | 
					            Log.d("onResume", "ID not initialized.");
 | 
				
			||||||
| 
						 | 
					@ -255,7 +254,7 @@ public class SurveillanceService extends Service {
 | 
				
			||||||
    private PendingIntent getPendingIntent(Context context) {
 | 
					    private PendingIntent getPendingIntent(Context context) {
 | 
				
			||||||
        Intent intent = new Intent(context, MainActivity.class);
 | 
					        Intent intent = new Intent(context, MainActivity.class);
 | 
				
			||||||
        intent.setAction("OPEN_ACTIVITY");
 | 
					        intent.setAction("OPEN_ACTIVITY");
 | 
				
			||||||
        return PendingIntent.getActivity(context, SurveillanceService.REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE);
 | 
					        return PendingIntent.getActivity(context, TestService.REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					@ -316,18 +315,13 @@ public class SurveillanceService extends Service {
 | 
				
			||||||
                Log.d("BT_Judge", "Not registered device");
 | 
					                Log.d("BT_Judge", "Not registered device");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            boolean isInCar = !getSharedPreferences("app_situation", MODE_PRIVATE).getBoolean("change", false);
 | 
					            boolean isInCar = getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).getBoolean("isInCarPref", false);
 | 
				
			||||||
            if (!isInCar) {
 | 
					            if (!isInCar) {
 | 
				
			||||||
                Log.d("BT_Judge", "Not in car");
 | 
					                Log.d("BT_Judge", "Not in car");
 | 
				
			||||||
                return;
 | 
					                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
 | 
					            String action = intent.getAction(); // may need to chain this to a recognizing function
 | 
				
			||||||
            if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
 | 
					            if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
 | 
				
			||||||
                // bluetoothが切断されたときに乗車状態のとき
 | 
					                // bluetoothが切断されたときに乗車状態のとき
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user