質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.33%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

590閲覧

Logcatに情報が表示されない

m._.i

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2025/01/08 13:53

編集2025/01/24 07:52

実現したいこと

検知した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」になります。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2025/01/08 15:56 編集

altbeacon のバージョンや、 androidmanifest.xml の内容もご提示願えますか。 また、 state の表示までに他のログの出力もあるかと思いますが、それらはどうなっているのでしょうか。
m._.i

2025/01/09 00:36

AndroidManifest.xmlの内容を更新いたしました。 altbeaconのバージョンの確認方法がわからず、すみません。コード上ではbuild.gradle.ktsに「implementation(libs.android.beacon.library)」と定義しています。 実行すると多くのログが流れるのですが、どのログが該当するのかがわかりません。申し訳ありません。
jimbe

2025/01/09 03:26

編集有難う御座います。 バージョンは、 gradle フォルダ内の libs.versions.toml を参照してください。 バージョン カタログ ファイルを作成する https://developer.android.com/build/migrate-to-catalogs?hl=ja ログは、 Log.d に指定したタグでフィルター出来ると思います。 また見立ちやすいタグ(*を並べるとか)にすると埋もれにくいです。 折角ログを出すようにしているのに分からないのでは意味がありません。何処まで動いているのかの確認には絶対必要です。 質問内容自体が少し変わりましたが、表示が無いというのはログの出力自体が無いのか、それとも state のようにログは出ているけども内容が思ったものではないということなのか、どちらでしょう。(この辺りの表現は確実にして頂けると助かります。) 或いは無関係なものを消した後の一厘のログをコードのようにご提示頂ければ『百聞は一見に』的に分かり易いでしょう。
m._.i

2025/01/09 05:04

教えて頂きありがとうございます。 「androidBeaconLibrary = "2.20.6"」との表示がありました。 Log.dに指定したタグでフィルターをかけましたが、MyActivityしかかかりませんでした。 内容は質問に記した内容と変わらず、「MyActivity|com.example.myapplication|D|Determine State0」でした。 表示がないというのは、ログの出力自体がありません。参考にさせていただいている方が表示できてる内容(UUIDなど)が表示されない状態です。 下記のログは、実行した後に出力されたログで、なんとなく関係がありそうなもの、「E」となっているものなどです。自分が無関係と思うものを削っていますが、過不足ありましたら申し訳ありません。 system_server|D|applicationScale - 1.0 system_server|E|Permission violation - getConfiguredNetworks not allowed for uid=*****, packageName=com.appnextg.cleaner, reason=java.lang.SecurityException: Location mode is disabled for the device system_server|D|mCompatibilityFlags - 0 system_server|D|applicationDensity - 480 system_server|D|applicationScale - 1.0 perfservice|E|IIop:: Iop HAL Service is not available. com.example.myapplication|D|Checking for metadata for AppLocalesMetadataHolderService : Service not found com.example.myapplication|W|Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed) com.example.myapplication|I|BeaconManager started up on pid 5817 named 'com.example.myapplication' for application package 'com.example.myapplication'. isMainProcess=true com.example.myapplication|D|Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25 com.example.myapplication|D|Parsing beacon layout: m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24 com.example.myapplication|I|Using immediateScanJobId from manifest: 208352939 com.example.myapplication|I|Using periodicScanJobId from manifest: 208352940 com.example.myapplication|W|Requested interval +5m0s0ms for job 208352940 is too small; raising to +15m0s0ms com.example.myapplication|W|Requested flex 0 for job 208352940 is too small; raising to +5m0s0ms com.example.myapplication|D|Determine State0 com.example.myapplication|I|Skipped 40 frames! The application may be doing too much work on its main thread. com.example.myapplication|I|Build Config : S L 8.0.12 AArch64 com.example.myapplication|I|PFP: *****, ME: ***** com.example.myapplication|W|mapper 3.x is not supported statsd|E|Found dropped events: 1 error -19 last atom tag 83 from uid ***** |E|poll() has timed out for /sys/module/msm_performance/events/cpu_hotplug |E|Block on poll() |E|Permission violation - getConfiguredNetworks not allowed for uid=*****, packageName=com.appnextg.cleaner, reason=java.lang.SecurityException: Location mode is disabled for the device system_server|W|Scheduling restart of crashed service com.example.myapplication/org.altbeacon.beacon.service.ScanJob in 1000ms system_server|W|Force removing ActivityRecord{21bd064 u0 com.example.myapplication/.MainActivity t2139 f}: app died, no saved state system_server|E|UXEngine Trigger - Returning null
jimbe

2025/01/09 06:11 編集

altbeacon が 2.20.6 である点了解しました。 検索すると GitHub に以下のような質問がありました。 altbeacon does not detect beacon devices on Android 12 and later #1197 https://github.com/AltBeacon/android-beacon-library/issues/1197 質問者のコードが kotlin で長く、また提示がうまく出来ていないのか切れ々々でとても読み難いです(私も読めてません^^; )が、何かヒントが隠されているかもしれません。 因みに m._.i さんの android のバージョンは幾つでしょうか。 また、 android のバージョンによって幾つかの権限の要求コードが必要ですが、それは大丈夫でしょうか。 https://altbeacon.github.io/android-beacon-library/requesting_permission.html >Log.dに指定したタグでフィルターをかけましたが、MyActivityしかかかりませんでした。 ログに didEnterRegion や didExitRegion で指定しているタグ "iBeacon" が無いということですね。 Region に入れば didEnterRegion が呼ばれてログが出るでしょうから、入っておらず、従って didDetermineStateForRegion で 0 となるのは状況的には合っているように思います。 テストされている環境で iBeacon の範囲内に入っていることは確実でしょうか。 >参考にさせていただいている方が表示できてる 参考にされている方のコードが得られるようでしたら(権利的な問題とか無ければ)ご提示頂くことは可能でしょうか。 もしくは何処かに公開されている記事・コードでしたら URL でも構いません。
m._.i

2025/01/09 06:51

>GitHubに以下のような質問があった 調べてくださってありがとうございます。確認してみます。 実行に使用しているAndroidのバージョンは10です。 権限コードも確認しましたが、おそらく大丈夫そうです。 >テスト環境下でiBeaconの範囲内に入っていることは確実か GooglePlayなどでインストールできる既存アプリで確認し、正常にiBeaconと繋がっていました。 テスト時もBluetoothと位置情報をONにして行っています。 以下は参考にさせて頂いているサイトです。全4編ですが、今回質問させていただいたのは、その3までです。また、サイトで公開されているコードをそのまま実行してもAndroid Studioのバージョン違いなどでうまく実行できなかったため、多少違う部分があるかと思います。 https://houwa-js.co.jp/2018/08/20180808/
jimbe

2025/01/13 15:53 編集

>多少違う部分があるかと思います 似たことでちょっと気になる点がありました。 【Android】altBeacon ライブラリを使って領域監視を行う(v2.19以上対応) https://qiita.com/kenmaeda51415/items/ac5a2d5a15783bbe9192#%E5%AE%9F%E8%A3%85 によると altbeacon 2.19 から BeaconConsumer が非推奨になる等インターフェースが変わっています。 削除では無いので動作するはずとは思いますが、 bind が不要になったり等メソッドの実行タイミング等が変わっている可能性はあるかもしれませんので、出来れば新しいインターフェースに沿った記事を参考にされたほうが良いかもしれません。 (以下勘違いのようなので削除)
jimbe

2025/01/19 13:53

質問は後から問題の解決を探す人への情報になりますので、消さないでください。 解決されましたら回答からベストアンサーを選ぶことで「解決済み」と表示されるようになります。
dodox86

2025/01/20 00:14

@質問者 giyskgさん 丁寧な回答とフォローで解決した上に追加の質問への対応もいただいたのに、質問をクローズもせず、用は済んだとばかりに削除なのでしょうか。ひどいですね。 [質問・回答を消去したい] https://teratail.com/help#delete-question > 一般に質問・回答・コメント等の削除は原則不可としております。投稿いただいた質問や回答は、他に同じ問題を抱えている人の貴重な情報になるためです。 ユーザー名をみると何となく捨て垢っぽいですが、そういうつもりではないのであれば、質問内容を復帰させてください。
dodox86

2025/01/21 13:21

> ユーザー名をみると何となく捨て垢っぽいですが、そういうつもりではないのであれば、質問内容を復帰させてください。 残念ですが当該質問者様は恐らくもう読んでいない、或いは読んでいてもスルーしていると判断しましたので通報しました。
teratail

2025/01/28 06:18

teratailサポートチームです。質問内容が意図的に抹消されていたため、運営により質問を復元いたしました。
guest

回答1

0

質問へのコメントを元に、 m._.i さんが参考にされている記事の最後のプログラムを手元の環境(+altbeacon 2.20.6)で非推奨等を使わないように作り直してみました。が、手元には iBeacon の送信機が無いので受信テスト出来ません。
お時間ありましたら実行してみて頂けないでしょうか。
こちらでは現在の所実行すると数秒おきに "InRegion 0" が出続けるようになります。

発信:リュウド株式会社 ReUdo R1Beacon (RE-BC-BLE401W-1) BluetoothLE4.0
受信:SONY Xperia XZ3 (au) Android10, Bluetooth5.0

受信時スクリーンショット

AndroidManifest.xml へのパーミッション等の追加

xml

1 <uses-permission android:name="android.permission.BLUETOOTH" /> 2 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 3 4 <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

MainActivity.java

java

1import static androidx.activity.result.contract.ActivityResultContracts.*; 2 3import android.Manifest; 4import android.content.pm.PackageManager; 5import android.database.DataSetObserver; 6import android.os.*; 7import android.util.Log; 8import android.view.*; 9import android.widget.*; 10 11import androidx.activity.result.ActivityResultLauncher; 12import androidx.annotation.NonNull; 13import androidx.appcompat.app.*; 14import androidx.lifecycle.*; 15 16import org.altbeacon.beacon.*; 17 18import java.util.*; 19 20public class MainActivity extends AppCompatActivity { 21 private static final String LOG_TAG = "MainActivity"; 22 23 private final ActivityResultLauncher<String[]> launcher = 24 registerForActivityResult(new RequestMultiplePermissions(), granted -> { 25 if(granted.get(Manifest.permission.ACCESS_FINE_LOCATION) == Boolean.TRUE) { 26 start(); 27 } else { 28 finish(); 29 } 30 }); 31 32 @Override 33 protected void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_main); 36 37 if(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 38 start(); 39 } else { 40 launcher.launch(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}); 41 } 42 } 43 44 void start() { 45 TextView resultText = findViewById(R.id.result); 46 ListView listView = findViewById(R.id.beacon_list); 47 48 BeaconAdapter adapter = new BeaconAdapter(); 49 listView.setAdapter(adapter); 50 51 adapter.registerDataSetObserver(new DataSetObserver() { 52 @Override 53 public void onChanged() { 54 resultText.setText(String.format(Locale.getDefault(), "検知Beacon数: %d 台", adapter.getCount())); 55 } 56 @Override 57 public void onInvalidated() { 58 onChanged(); 59 } 60 }); 61 62 settingAltBeacon(adapter); 63 } 64 65 private void settingAltBeacon(BeaconAdapter adapter) { 66 BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this); 67 String BEACON_LAYOUT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"; 68 beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(BEACON_LAYOUT)); 69 70 getLifecycle().addObserver(new DefaultLifecycleObserver() { 71 private final Region region = new Region("iBeacon", null, null, null); 72 @Override 73 public void onResume(@NonNull LifecycleOwner owner) { 74 beaconManager.startMonitoring(region); 75 beaconManager.startRangingBeacons(region); 76 } 77 @Override 78 public void onPause(@NonNull LifecycleOwner owner) { 79 beaconManager.stopMonitoring(region); 80 beaconManager.stopRangingBeacons(region); 81 } 82 }); 83 84 beaconManager.addMonitorNotifier(new MonitorNotifier() { 85 @Override 86 public void didEnterRegion(Region region) { 87 Log.d(LOG_TAG, "Enter Region"); 88 } 89 @Override 90 public void didExitRegion(Region region) { 91 Log.d(LOG_TAG, "Exit Region"); 92 } 93 @Override 94 public void didDetermineStateForRegion(int state, Region region) { 95 Log.d(LOG_TAG, "Determine State " + state); 96 } 97 }); 98 99 beaconManager.addRangeNotifier((beacons, region) -> { 100 Log.d(LOG_TAG, "InRegion " + beacons.size()); 101 List<BeaconItem> list = new ArrayList<>(); 102 for(Beacon beacon : beacons) list.add(new BeaconItem(beacon)); 103 list.sort(Comparator.comparingDouble(a -> a.distance)); 104 adapter.set(list); 105 }); 106 } 107 108 private static class BeaconAdapter extends BaseAdapter { 109 private List<BeaconItem> itemList = new ArrayList<>(); 110 111 void set(@NonNull List<BeaconItem> list) { 112 itemList = new ArrayList<>(list); 113 notifyDataSetChanged(); 114 } 115 116 @Override 117 public int getCount() { 118 return itemList.size(); 119 } 120 121 @Override 122 public Object getItem(int position) { 123 return itemList.get(position); 124 } 125 126 @Override 127 public long getItemId(int position) { 128 return 0; 129 } 130 131 @Override 132 public View getView(int position, View convertView, ViewGroup parent) { 133 ViewHolder vh = convertView == null ? new ViewHolder(parent) : (ViewHolder)convertView.getTag(); 134 return vh.bind(itemList.get(position)); 135 } 136 137 private static class ViewHolder { 138 private final View itemView; 139 private final TextView beacon; 140 141 ViewHolder(ViewGroup parent) { 142 itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.beacon_view, parent, false); 143 itemView.setTag(this); 144 145 beacon = itemView.findViewById(R.id.beacon); 146 } 147 148 View bind(BeaconItem item) { 149 beacon.setText(String.format(Locale.getDefault(), 150 "UUID:%s\nmajor:%s minor:%s\nRSSI:%d TxPower:%d Distance:%f", 151 item.uuid.toString(), item.major.toString(), item.minor.toString(), 152 item.rssi, item.txPower, item.distance)); 153 return itemView; 154 } 155 } 156 } 157 158 private static class BeaconItem { 159 final Identifier uuid, major, minor; 160 final int rssi, txPower; 161 final double distance; 162 163 BeaconItem(Beacon beacon) { 164 this(beacon.getId1(), beacon.getId2(), beacon.getId3(), beacon.getRssi(), beacon.getTxPower(), beacon.getDistance()); 165 } 166 BeaconItem(Identifier uuid, Identifier major, Identifier minor, int rssi, int txPower, double distance) { 167 this.uuid = uuid; 168 this.major = major; 169 this.minor = minor; 170 this.rssi = rssi; 171 this.txPower = txPower; 172 this.distance = distance; 173 } 174 } 175}

layout/activity_main.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 <TextView 10 android:id="@+id/result" 11 android:layout_width="0dp" 12 android:layout_height="wrap_content" 13 android:text="検知Beacon数: 0 台" 14 android:textSize="18sp" 15 android:background="#e0e0e0" 16 app:layout_constraintEnd_toEndOf="parent" 17 app:layout_constraintStart_toStartOf="parent" 18 app:layout_constraintTop_toTopOf="parent" /> 19 20 <ListView 21 android:id="@+id/beacon_list" 22 android:layout_width="0dp" 23 android:layout_height="0dp" 24 app:layout_constraintBottom_toBottomOf="parent" 25 app:layout_constraintEnd_toEndOf="parent" 26 app:layout_constraintStart_toStartOf="parent" 27 app:layout_constraintTop_toBottomOf="@id/result" /> 28 29</androidx.constraintlayout.widget.ConstraintLayout>

layout/beacon_view.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<TextView xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/beacon" 4 android:layout_width="match_parent" 5 android:layout_height="wrap_content" 6 android:textSize="16sp" />

投稿2025/01/09 13:01

編集2025/01/16 12:28
jimbe

総合スコア13286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m._.i

2025/01/10 04:57

作り直ししていただきありがとうございます。 ビーコンと接続した状態で実行したところ、実験端末(Android ver10)に「検知Beacon数:0台」のみ表示されました。 logに「InRegion 0」は出ました。
jimbe

2025/01/10 05:16

テストして頂きありがとうございます。お手数お掛けしてスイマセン。 InRegion 0 のログは数秒おきに流れましたでしょうか。 その状態でビーコンの範囲内の出入りをしたら如何でしょうか。
m._.i

2025/01/10 05:45

InRegion 0のログは数秒おきに流れています。 InRegion 0のログが流れている状態でビーコンに接続してみましたが、実行結果は先程の回答と変わりませんでした。
jimbe

2025/01/10 06:12 編集

何度もありがとうございます。ということは裏で何か動いているのは確かそうですね。もっと調べてみます。 情報を探している中で以下のサイトでサンプルを公開されているのを見つけました。 Android における Beacon を活用した新機能の実装 https://developers.cyberagent.co.jp/blog/archives/12901/ まだコード全てを見てはいませんが、これまで出たのとはまた違う出所からですので意味があるかと思います。 (どうも Region の値が違うようです…)
m._.i

2025/01/10 17:08

ありがとうございます.わたしもいろいろ試してみます.
jimbe

2025/01/10 17:53

どうにも実際に受信が試せないと試行錯誤もし難いので、発信機を amazon に1つお願いしました。が到着が来週後半…、
m._.i

2025/01/11 05:53

そこまでしてくださって大変申し訳ないです...全身全霊をかけてなんとしてでも実装できるように頑張ります。
m._.i

2025/01/11 08:21

一つお聞きしたいのですが、新しいプロジェクトを作るときにテンプレートを最初に選択すると思うのですが(Empty ActivityやEmpty Views Activityなど)、jimbe様はどちらを選択されましたか。
jimbe

2025/01/11 10:49

購入は自分も beacon を使えるようになったほうが良さそうというだけのことですので、お気になさらず^^ 私は Empty Activity を使うことが多いです。なるべくプレーンな状態から始めるようにしています。
m._.i

2025/01/11 14:06

ありがとうございます。 また何か気付いたこと等がありましたら、些細なことでも教えてくださると大変嬉しく思います。 よろしくお願いいたします。
jimbe

2025/01/13 06:16

動かない原因がコードに無かったとしたら、見直すとすればパーミッションでしょうか。 altbeacon で言及されていてご提示のマニフェストに無いのは(裏動作用の) backbround_location ですね。原因の可能性はほぼ無いと思われますが、万一を潰しておくとして設定しておくとか、関連して checkSelfPermission, requestPermission 等での権限獲得のコードを入れてもいいかもしれません。
m._.i

2025/01/15 14:10

background_locationを追加したところ、logに出ているエラーが、「permission violation」と「Couldn't load memtrack module」が主に出るようになりました。 前者のエラーをなくすには、checselfpermissionとrequestpermissionも追加すべきでしょうか。(調べてもわからなかったため、追加せず実行しました)
jimbe

2025/01/15 16:20

background_location は requestPermission する必要があるかと。 まだ beacon は届きませんが、 altbeacon を使わない方法も試そうかと画策しております。
jimbe

2025/01/16 09:01

beacon が届きましたので早速試してみました。 結果として、 iBeacon を受信してリストに表示されることが確認できました。 ちょっとコードを弄っていたので回答のコードを差し替え、また使用した機器を追加します。
m._.i

2025/01/18 07:14

実行したところ、無事に受信、表示されました。ありがとうございました。 追加の質問となってしまい申し訳ないのですが、複数のビーコンを受信した際、一番近い距離のビーコンの情報を表示したい場合、どのようなコードが必要になるかわかりますでしょうか。
jimbe

2025/01/18 08:11

回答のコードでは Adapter にセットする List<BeaconItem> を 103 行目で distance でソートしています。 ですのでソート結果の先頭を get(0) で取り出せば直近になると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.33%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問