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

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

ただいまの
回答率

91.37%

  • Android

    5151questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    2703questions

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

beaconの情報を取得出来ない

受付中

回答 1

投稿 2017/11/19 22:25 ・編集 2017/11/21 22:55

  • 評価
  • クリップ 0
  • VIEW 55

zuizui_

score 1

Beaconの情報をandroidで受信しようとしています。
その前段階として、log文で情報が出力されているか確認しているところです。
エラーはおきていないのですが、情報を出力するログが出ず困っています。
詳しい方がいらっしゃいましたらお願いします。

package com.example.beacontest12;
import android.os.Bundle;
import android.os.RemoteException;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconConsumer;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.BeaconParser;
import org.altbeacon.beacon.Identifier;
import org.altbeacon.beacon.MonitorNotifier;
import org.altbeacon.beacon.RangeNotifier;
import org.altbeacon.beacon.Region;

import java.util.Collection;

public class MainActivity extends AppCompatActivity implements BeaconConsumer {




    //perser設定
    public static final String IBEACON_FORMAT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24";

    public static final String UUID = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";



    public BeaconManager beaconManager;



    //インスタンス化
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        BeaconManager mBeaconManager = BeaconManager.getInstanceForApplication(this);

        // staticメソッドで取得
        beaconManager = BeaconManager.getInstanceForApplication(this);
        // BeaconParseを設定
        beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(IBEACON_FORMAT));




    }


    @Override
    protected void onResume() {
        super.onResume();
        // サービスの開始
        beaconManager.bind(this);
    }



    @Override
    public void onBeaconServiceConnect() {
        //受信するbeaconのuuid,major,minor設定
        //Identifier uuid = Identifier.parse(UUID);
        Identifier uuid = Identifier.parse("00000000-5896-1001-B000-001C4DE59704");
        Identifier major = Identifier.parse("1");
        Identifier minor = Identifier.parse("1");
        Region mRegion = new Region("ibeacon", uuid, major, minor);



        beaconManager.addMonitorNotifier(new MonitorNotifier() {

            @Override
            public void didEnterRegion(Region region) {
                Log.d("log", "didEnterRegion1");
                try {
                    beaconManager.startRangingBeaconsInRegion(region);
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
                // 領域侵入
            }


            @Override
            public void didExitRegion(Region region) {
                Log.d("log", "didEnterRegion2");

                // 領域退出
            }

            @Override
            public void didDetermineStateForRegion(int i, Region region) {
                Log.d("log", "didEnterRegion3");

                //レンジング開始
                //BeaconManager.startRangingBeaconsInRegion(Region);だとエラー

                try {
                    beaconManager.startRangingBeaconsInRegion(region);
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
                Log.d("log", "didEnterRegion4");
                beaconManager.addRangeNotifier(new RangeNotifier() {

                    @Override
                    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                        Log.d("log", "didEnterRegion5");
                        for (Beacon beacon : beacons) {
             Log.d("log", "didEnterRegion5-2");
                            // ログの出力
                            Log.d("log", "UUID:" + beacon.getId1() + ", major:" + beacon.getId2() + ", minor:" );

                            //@Override
                            //public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {

                            // 検出したビーコンの情報
                        }
                        Log.d("log", "didEnterRegion6");
                    }



                });
                Log.d("log", "didEnterRegion7");

            }

        });

        Log.d("log", "didEnterRegion8");
        try {
            // ビーコン情報の監視を開始
            beaconManager.startMonitoringBeaconsInRegion(new Region("unique-id-001", null, null, null));
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        Log.d("log", "didEnterRegion9");
        beaconManager.addRangeNotifier(new RangeNotifier() {

            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                Log.d("log", "didEnterRegion10");
                for (Beacon beacon : beacons) {
                    Log.d("log", "didEnterRegion11");
                    // ログの出力

                    Log.d("log", "UUID:" + beacon.getId1() + ", major:" + beacon.getId2() + ", minor:" + beacon.getId3());
                }

                Log.d("log", "didEnterRegion12");
                //@Override
                //public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {

                // 検出したビーコンの情報


            }



        });
        Log.d("log", "didEnterRegion13");
    }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

各メソッドの先頭でログ出力を行い、自分の想定している順序でメソッドが呼ばれているかを確認してください。
また、パーミッションの設定は行なっていますか?

投稿 2017/11/21 02:24

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/21 23:03

    回答ありがとうございます。
    >各メソッドの先頭でログ出力を行い、自分の想定している順序でメソッドが呼ばれているかを確認してください。
    細かくログ文を追加してみました。

    以下ログ文
    11-21 22:35:24.090 2927-2927/com.example.beacontest12 D/log: didEnterRegion8
    11-21 22:35:24.102 2927-2927/com.example.beacontest12 D/log: didEnterRegion3
    11-21 22:35:24.102 2927-2927/com.example.beacontest12 D/log: didEnterRegion4
    11-21 22:35:24.102 2927-2927/com.example.beacontest12 D/log: didEnterRegion7
    11-21 22:35:24.103 2927-2927/com.example.beacontest12 D/log: didEnterRegion9
    11-21 22:35:24.103 2927-2927/com.example.beacontest12 D/log: didEnterRegion13
    11-21 22:35:25.151 2927-2950/com.example.beacontest12 D/log: didEnterRegion5
    11-21 22:35:25.151 2927-2950/com.example.beacontest12 D/log: didEnterRegion6
    11-21 22:35:25.151 2927-2950/com.example.beacontest12 D/log: didEnterRegion10
    11-21 22:35:25.151 2927-2950/com.example.beacontest12 D/log: didEnterRegion12
    11-21 22:35:26.272 2927-2951/com.example.beacontest12 D/log: didEnterRegion5
    11-21 22:35:26.272 2927-2951/com.example.beacontest12 D/log: didEnterRegion6
    11-21 22:35:26.273 2927-2951/com.example.beacontest12 D/log: didEnterRegion10
    11-21 22:35:26.273 2927-2951/com.example.beacontest12 D/log: didEnterRegion12
    このあとはdidenterRegion5,6,10,12が繰り返し出力されています。
    ログを見る限りでは拡張for文内に入っていないため、ログが出力されていないようです。
    自分ではなぜ拡張for文内に入って行かないのか分かりません。
    厚かましく恐縮ですが、何かわかることがあれば追記をお願いします。

    >パーミッションの設定は行なっていますか?
    以下の行をmanifestファイルに書き込んであります。
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <!--対応していない機種にインストールされないようにuser-futureを設定する-->
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
    <!--Android 6.0でBLEを使うのに位置情報のパーミッションが必要-->
    <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    キャンセル

  • 2017/11/21 23:28

    didEnterRegionのregionの内容を調べてください。
    また、ログ出力し、他の人に見せるのであれば、メッセージは適当なものにしましょう。
    番号では管理してわかるのはあなただけです、他の人がログメッセージの意味を理解する時間を最小にする努力をしてください。

    キャンセル

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

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • Android

    5151questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    2703questions

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