Bluetoothデバイスを登録済みか判定する機能を追加 #13

Merged
Asura146 merged 1 commits from kyou/layout into main 2024-01-17 03:12:31 +00:00
5 changed files with 114 additions and 9 deletions

View File

@ -2,9 +2,16 @@ package com.example.childguard;
import static android.content.ContentValues.TAG;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.core.app.ActivityCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@ -37,6 +44,7 @@ import com.google.firebase.firestore.FirebaseFirestore;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* A simple {@link Fragment} subclass.
@ -172,11 +180,13 @@ public class HomeFragment extends Fragment {
//デバック用ボタン
view.findViewById(R.id.bt_debug).setOnClickListener( v -> {
Toast.makeText(getContext(), PreferenceManager.getDefaultSharedPreferences(getContext().getApplicationContext()).getString("bluetooth_device1", "none"), Toast.LENGTH_SHORT).show();
Toast.makeText(getContext(), PreferenceManager.getDefaultSharedPreferences(getContext().getApplicationContext()).getString("bluetooth_device_id", "none"), Toast.LENGTH_SHORT).show();
});
return view;
}
@Override
public void onResume() {
super.onResume();
@ -212,4 +222,16 @@ public class HomeFragment extends Fragment {
// フラグメントトランザクションをコミット
transaction.commit();
}
public void bluetooth_judge(String device_id){
if(device_id.equals(PreferenceManager.getDefaultSharedPreferences(requireContext().getApplicationContext()).getString("Bluetooth_device_id","none"))){
Log.d(" ","登録デバイスです");
}
else {
Log.d(" ","登録デバイスではないです");
}
}
}

View File

@ -10,8 +10,12 @@ import android.annotation.SuppressLint;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Vibrator;
@ -24,10 +28,16 @@ import java.util.Date;
import java.util.Random;
import java.util.UUID;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
@ -111,8 +121,60 @@ public class MainActivity extends AppCompatActivity {
flg = true;
}
});
//Bluetooth検知機能
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
Log.d("BT", "No permission to connect bluetooth devices");
return;
}
else {
Log.d("BT", "Permission to connect bluetooth devices granted");
}
registerReceiver(receiver, intentFilter);
}
//Bluetoothの検知機能
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); // may need to chain this to a recognizing function
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
HomeFragment homeFragment=new HomeFragment();
if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
Log.d("BT", "No permission to connect bluetooth devices");
return;
}
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
//Do something if connected
Log.d("BT", "Device connected");
String registeredId = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("bluetooth_device_id", "none");
Log.d("BT_Judge", "Registered: " + registeredId);
if (deviceHardwareAddress.equals(registeredId)) {
Log.d("BT_Judge", "登録済み");
} else Log.d("BT_Judge", "未登録");
} else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
//Do something if disconnected
Log.d("BT", "Device disconnected");
}
}
};
//通知のやつ
public void notifyMain() {
//通知をする際に起動するバイブレーション

View File

@ -54,7 +54,6 @@ public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemVi
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
// OK button pressed
Toast.makeText(v.getContext(), "OK button clicked", Toast.LENGTH_SHORT).show();
//共有プリファレンスに保存
SharedPreferences sharedPreferences=PreferenceManager.getDefaultSharedPreferences(this.applicationContext);
sharedPreferences.edit().putString("bluetooth_device_id", deviceList.get(position)[1]).apply();

View File

@ -6,6 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
tools:context=".bluetooth_setupFragment">
@ -13,8 +14,17 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登録可能デバイス"
android:text="デバイス"
android:textSize="35dp"
android:textColor="@color/black"
android:layout_marginTop="20dp"
/>
<View
android:id="@+id/divider1"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/black" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView1"
android:layout_width="match_parent"
@ -24,13 +34,24 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登録済みデバイス"
android:text="登録デバイス"
android:textSize="35dp"
android:textColor="@color/black"
android:layout_marginTop="20dp"
/>
<View
android:id="@+id/divider2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/black"
/>
<TextView
android:id="@+id/registered_device"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50dp"/>
android:layout_height="60dp"
android:textSize="30sp"
android:textColor="@color/black"
/>

View File

@ -6,6 +6,7 @@
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"/>
android:textSize="30sp"
android:textColor="@color/black"/>
</LinearLayout>