前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Android Studio 3.0(JAVA)でビーコンからのデータをAndroidで受け取ろうとしています。
当方、Android開発を始めて1ヵ月も経たない初心者なため、以下のサイトをほぼそのまま参考にし実行したところエラーとなり困っています。
https://qiita.com/gupuru/items/ae67e619832ca20c9f3f
どうか助けてください。お願いいたします。
発生している問題・エラーメッセージ
①ビーコン(他のアプリでデータを発信していることを確認済み)に近づいても didEnterRegion()が実行されない。
②didEnterRegion()とdidExitRegion()に
beaconManager.startRangingBeaconsInRegion(mRegion); beaconManager.stopRangingBeaconsInRegion(mRegion);
を入れると
エラー Unhandled exception: android.os.RemoteException
となる。
MainActivity.java
Java
1package com.example.test.beaconread; 2 3import android.os.RemoteException; 4import android.support.v7.app.AppCompatActivity; 5import android.os.Bundle; 6import android.util.Log; 7 8import org.altbeacon.beacon.Beacon; 9import org.altbeacon.beacon.BeaconConsumer; 10import org.altbeacon.beacon.BeaconManager; 11import org.altbeacon.beacon.BeaconParser; 12import org.altbeacon.beacon.Identifier; 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 //定数 22 private static final String IBEACON_FORMAT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"; 23 24 private BeaconManager beaconManager; 25 26 @Override 27 protected void onCreate(Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.activity_main); 30 Log.d("Beacon", "onCreate Success!!"); 31 32 //インスタンス化 33 beaconManager = BeaconManager.getInstanceForApplication(this); 34 //AltBeaconのParserをiBeaconに設定する 35 beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(IBEACON_FORMAT)); 36 37 } 38 39 @Override 40 protected void onResume() { 41 super.onResume(); 42 // サービスの開始 43 beaconManager.bind(this); 44 Log.d("Beacon", "onResume Success!!"); 45 } 46 47 @Override 48 protected void onPause() { 49 super.onPause(); 50 // サービスの停止 51 beaconManager.unbind(this); 52 Log.d("Beacon", "onPause Success!!"); 53 } 54 55 @Override 56 public void onBeaconServiceConnect() { 57 final Region mRegion = new Region("ibeacon", null, null, null); 58 59 beaconManager.addMonitorNotifier(new MonitorNotifier() { 60 @Override 61 public void didEnterRegion(Region region) { 62 // 領域侵入 63 Log.d("Beacon", "didEnterRegion Success!!"); 64 65 //beaconManager.startRangingBeaconsInRegion(mRegion); //エラー② 66 } 67 68 @Override 69 public void didExitRegion(Region region) { 70 // 領域退出 71 Log.d("Beacon", "didExitRegion Success!!"); 72 73 //beaconManager.stopRangingBeaconsInRegion(mRegion); //エラー② 74 } 75 76 @Override 77 public void didDetermineStateForRegion(int i, Region region) { 78 // 領域に対する状態が変化 79 Log.d("Beacon", "didDetermineStateForRegion Success!!"); 80 } 81 82 }); 83 84 beaconManager.addRangeNotifier(new RangeNotifier() { 85 @Override 86 public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 87 Log.d("Beacon" , "addRangeNotifier Success!!"); 88 // 検出したビーコンの情報を全部Logに書き出す 89 for(Beacon beacon : beacons) { 90 // ログの出力 91 Log.d("Beacon", "UUID:" + beacon.getId1() + ", major:" + beacon.getId2() 92 + ", minor:" + beacon.getId3() + ", Distance:" + beacon.getDistance() 93 + ",RSSI" + beacon.getRssi()); 94 } 95 } 96 }); 97 98 try { 99 //ビーコン情報の監視を開始 100 beaconManager.startMonitoringBeaconsInRegion(mRegion); 101 Log.d("Beacon" , "startMonitoringBeaconsInRegion Success!!"); 102 } catch (RemoteException e) { 103 e.printStackTrace(); 104 Log.d("Beacon" , "Error Occurred"); 105 } 106 } 107 108} 109
build.gradle(Module.app)
apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.example.test.beaconread" minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { repositories { //追加 jcenter() } implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' compile 'com.android.support:support-annotations:27.1.1' // 追加 compile 'org.altbeacon:android-beacon-library:2+' }
AndroidManifest.xml
xml
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.test.beaconread"> 4 5 <uses-permission android:name="android.permission.BLUETOOTH"/> 6 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 7 <!--対応していない機種にインストールされないようにuser-futureを設定する--> 8 <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 9 <!--Android 6.0でBLEを使うのに位置情報のパーミッションが必要--> 10 <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/> 11 12 <application 13 android:allowBackup="true" 14 android:icon="@mipmap/ic_launcher" 15 android:label="@string/app_name" 16 android:roundIcon="@mipmap/ic_launcher_round" 17 android:supportsRtl="true" 18 android:theme="@style/AppTheme"> 19 <activity android:name=".MainActivity"> 20 <intent-filter> 21 <action android:name="android.intent.action.MAIN" /> 22 23 <category android:name="android.intent.category.LAUNCHER" /> 24 </intent-filter> 25 </activity> 26 </application> 27 28</manifest>
試したこと
実機(Huawei Honor8 Android Version7.0)でテストしたところ、一部のLogが表示されないように標準で設定されていたため、隠しコマンド(電話帳アプリ経由)で"AP Log"を表示させるようにしました。
その後、アプリを実機で実行し、Logcat内でタグとして設定した文字列"Beacon"を検索した際のLogが以下の様になっています。
05-22 16:04:22.736 27282-27282/? D/Beacon: onCreate Success!! 05-22 16:04:22.740 27282-27282/? I/BeaconManager: BeaconManager started up on pid 27282 named 'com.example.test.beaconread' for application package 'com.example.test.beaconread'. isMainProcess=true 05-22 16:04:22.745 27282-27282/? D/BeaconParser: Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25 05-22 16:04:22.745 27282-27282/? D/BeaconParser: Parsing beacon layout: m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24 05-22 16:04:22.754 27282-27282/? D/Beacon: onResume Success!! 05-22 16:04:22.783 27282-27282/? I/BeaconService: beaconService version 2.14 is starting up on the main process 05-22 16:04:22.841 27282-27282/? I/BeaconService: binding 05-22 16:04:22.900 27282-27282/? D/Beacon: didDetermineStateForRegion Success!! 05-22 16:04:22.900 27282-27282/? D/Beacon: startMonitoringBeaconsInRegion Success!! 05-22 16:04:22.903 27282-27282/? I/BeaconService: start monitoring received
補足情報
Android Studio 3.0
OS:Android 7.0
実機:Huawei Honor 8

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/22 09:32
2018/05/22 09:48
2018/05/22 10:00
2018/05/23 02:41
2018/05/23 03:07 編集