実現したいこと
検知したiBeaconの情報をLogcatに表示されるようにしたい。
発生している問題・分からないこと
検知した際にLogcatにUUIDやmajor, minorなどを表示できるはずが、表示されない。
該当のソースコード
MainActivity.java
1package com.example.myapplication; 2 3import android.os.Bundle; 4import android.os.RemoteException; 5import android.util.Log; 6 7import androidx.appcompat.app.AppCompatActivity; 8 9import org.altbeacon.beacon.Beacon; 10import org.altbeacon.beacon.BeaconConsumer; 11import org.altbeacon.beacon.BeaconManager; 12import org.altbeacon.beacon.BeaconParser; 13import org.altbeacon.beacon.MonitorNotifier; 14import org.altbeacon.beacon.RangeNotifier; 15import org.altbeacon.beacon.Region; 16 17import java.util.Collection; 18 19public class MainActivity extends AppCompatActivity implements BeaconConsumer { 20 21 private static final String IBEACON_FORMAT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"; 22 23 private BeaconManager beaconManager; 24 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.activity_main); 29 30 beaconManager = BeaconManager.getInstanceForApplication(this); 31 32 beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(IBEACON_FORMAT)); 33 34 beaconManager.addRangeNotifier(new RangeNotifier() { 35 @Override 36 public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 37 for (Beacon beacon : beacons) { 38 Log.d("MyActivity", "UUID:" + beacon.getId1() + ", major:" 39 + beacon.getId2() + ", minor:" + beacon.getId3() + ", RSSI:" 40 + beacon.getRssi() + ", TxPower:" + beacon.getTxPower() 41 + ", Distance:" + beacon.getDistance()); 42 } 43 try { 44 beaconManager.startRangingBeaconsInRegion(region); 45 } catch (RemoteException e) { 46 e.printStackTrace(); 47 } 48 } 49 }); 50 51 } 52 53 @Override 54 protected void onResume() { 55 super.onResume(); 56 beaconManager.bind(this); 57 } 58 59 @Override 60 protected void onPause() { 61 super.onPause(); 62 beaconManager.unbind(this); 63 } 64 65 @Override 66 public void onBeaconServiceConnect() { 67 final Region mRegion = new Region("iBeacon", null, null, null); 68 beaconManager.addMonitorNotifier(new MonitorNotifier() { 69 @Override 70 public void didEnterRegion(Region region) { 71 Log.d("iBeacon", "Enter Region"); 72 } 73 74 @Override 75 public void didExitRegion(Region region) { 76 Log.d("iBeacon", "Exit Region"); 77 } 78 79 @Override 80 public void didDetermineStateForRegion(int i, Region region) { 81 Log.d("MyActivity", "Determine State" + i); 82 } 83 84 }); 85 86 try { 87 beaconManager.startMonitoringBeaconsInRegion(mRegion); 88 } catch (RemoteException e) { 89 e.printStackTrace(); 90 } 91 } 92 93}
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MyApplication" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
監視領域の機能実装も行っていますが、「MyActivity state1」になるはずが、「state0」になります。
補足
特になし