Compare commits
	
		
			7 Commits
		
	
	
		
			e906343619
			...
			16265d5d31
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 16265d5d31 | |||
| 4c4930ce65 | |||
| 9d92652385 | |||
| 1cf5a920b8 | |||
| e4431e1218 | |||
| 751d47aee7 | |||
| 25879c4ad5 | 
@ -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=".TestService" />
 | 
					        <service android:name=".SurveillanceService" />
 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
@ -31,6 +31,9 @@ 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
 | 
				
			||||||
@ -107,6 +110,9 @@ 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
 | 
				
			||||||
@ -124,16 +130,15 @@ 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;
 | 
				
			||||||
@ -167,7 +172,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,7 +14,6 @@ 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;
 | 
				
			||||||
@ -134,7 +133,7 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        registerReceiver(receiver, intentFilter);
 | 
					        registerReceiver(receiver, intentFilter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        startForegroundService(new Intent(this, TestService.class));
 | 
					        startForegroundService(new Intent(this, SurveillanceService.class));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -240,8 +239,10 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
            initNotification(mDocRef);//現在の位置を引数に initNotification()を処理
 | 
					            initNotification(mDocRef);//現在の位置を引数に initNotification()を処理
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
    public void ResetReported() {//FireBaseのisReportedをfalseに初期化するメソッド
 | 
					     * 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の取得
 | 
				
			||||||
@ -252,6 +253,9 @@ 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);
 | 
				
			||||||
@ -272,6 +276,9 @@ 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;
 | 
				
			||||||
        //通知チャネルの実装
 | 
					        //通知チャネルの実装
 | 
				
			||||||
@ -280,9 +287,11 @@ 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
 | 
				
			||||||
@ -441,30 +450,33 @@ 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,6 +3,8 @@ 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;
 | 
				
			||||||
@ -95,6 +97,7 @@ 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();
 | 
				
			||||||
@ -106,4 +109,11 @@ 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 TestService extends Service {
 | 
					public class SurveillanceService extends Service {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Handler handler = new Handler();
 | 
					    private final Handler handler = new Handler();
 | 
				
			||||||
    private Runnable notificationRunnable;
 | 
					    private Runnable notificationRunnable;
 | 
				
			||||||
@ -73,12 +73,13 @@ public class TestService 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.");
 | 
				
			||||||
@ -254,7 +255,7 @@ public class TestService 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, TestService.REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE);
 | 
					        return PendingIntent.getActivity(context, SurveillanceService.REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -315,13 +316,18 @@ public class TestService extends Service {
 | 
				
			|||||||
                Log.d("BT_Judge", "Not registered device");
 | 
					                Log.d("BT_Judge", "Not registered device");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            boolean isInCar = getSharedPreferences("Bluetooth_situation", MODE_PRIVATE).getBoolean("isInCarPref", false);
 | 
					            boolean isInCar = !getSharedPreferences("app_situation", MODE_PRIVATE).getBoolean("change", 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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user