2016-05-25 17 views
0

gesehen werden Ich versuche zu erhalten und Estimote Beacon von einer Beispiel-App gesehen werden, kann aber nicht zur Arbeit zu bekommen. Ich habe mir diese beiden Samples angeschaut und kann nicht sehen, was ich anders mache als sie, da ich den Großteil des Codes kopiert habe.Estimote Beacon kann nicht mit altbeacon android

Referenzen Ich verwende:

https://altbeacon.github.io/android-beacon-library/samples.html

http://www.software7.com/blog/creating-a-beacon-app-for-android-in-less-than-10-minutes-from-scratch/

Was nervt mich ist, dass ich diese seltsamen Protokolle von meiner app zu sehen, die die Bluetooth aus irgendeinem Grund nicht funktioniert, scheint wie.

Ich weiß, dass die UUID korrekt ist, weil ich eine andere App installiert habe, die genau dieses Beacon ohne Probleme sehen kann, aber wenn ich müde bin, meine eigene App zu erstellen, kann ich sie nicht zum Laufen bringen. Das Bluetooth ist definitiv eingeschaltet und Wifi ein- oder ausgeschaltet spielt keine Rolle.

Ich frage mich, ob jemand das Problem erkennen kann, da ich den Code auf HTC, Samsung Galaxy S6 und S5 (Lollipo und Marshmallow) ausprobiert habe und sie alle genau die gleichen Protokolle anzeigen.

Protokolle von meiner app (das nicht das Leuchtfeuer zu sehen)

example.com.beacontest D/BeaconParser: Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25 
example.com.beacontest D/BeaconParser: Parsing beacon layout: m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24 
example.com.beacontest D/Activity: performCreate Call secproduct feature valuefalse 
example.com.beacontest D/Activity: performCreate Call debug elastic valuetrue 
example.com.beacontest W/BluetoothCrashResolver: Can't read macs from BluetoothCrashResolverState.txt 
example.com.beacontest D/BluetoothAdapter: startLeScan(): null 
example.com.beacontest D/BluetoothLeScanner: onClientRegistered() - status=133 clientIf=0 
example.com.beacontest I/Timeline: Timeline: Activity_idle id: [email protected] time:7966418897 
example.com.beacontest I/Timeline: Timeline: Activity_idle id: [email protected] time:7966418898 
example.com.beacontest D/BluetoothAdapter: stopLeScan() 
example.com.beacontest D/BluetoothLeScanner: could not find callback wrapper 
example.com.beacontest D/BluetoothAdapter: startLeScan(): null 
example.com.beacontest D/BluetoothLeScanner: onClientRegistered() - status=133 clientIf=0 
example.com.beacontest D/BluetoothAdapter: stopLeScan() 

Hier sind die Protokolle von der Anwendung, die * WERKE * (mit den gleichen Telefonen, Leuchtfeuer und OSes). Sieht so aus, als müsste ich das Bluetooth auf meiner App einrichten, aber ich weiß nicht wirklich was es ist.

com.prodcode.dev D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothLeScanner: Stop Scan 
com.prodcode D/BluetoothLeScanner: Start Scan 
com.prodcode D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothAdapter: STATE_ON 
com.prodcode D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=13 

danke.

Code meiner Beispielanwendung:

public class MonitoringActivity extends AppCompatActivity implements BeaconConsumer { 
    protected static final String TAG = "ESTIMOTE_BEACON"; 
    private BeaconManager beaconManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ranging); 
     org.altbeacon.beacon.BeaconManager altBeaconManager = org.altbeacon.beacon.BeaconManager.getInstanceForApplication(this); 
     altBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")); 
     altBeaconManager.setBackgroundScanPeriod(5000); 
     altBeaconManager.setBackgroundBetweenScanPeriod(25000); 
     beaconManager = BeaconManager.getInstanceForApplication(this); 
     BeaconManager.setAndroidLScanningDisabled(true); 
     altBeaconManager.bind(this); 
    } 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     beaconManager.unbind(this); 
    } 
    public static final int BEACON_REGION_MAX = 10; 
    @Override 
    public void onBeaconServiceConnect() { 
     final String beaconID = getApplicationContext().getString(R.string.beaconUUID).toUpperCase(); 
     final Region region = new Region("BEACON_TEST", Identifier.parse(beaconID), Identifier.fromInt(BEACON_REGION_MAX), null); 
     beaconManager.setMonitorNotifier(new MonitorNotifier() { 
      @Override 
      public void didEnterRegion(Region region) { 
       Log.d(TAG, "I just saw an beacon for the first time!"); 
       try { 
        beaconManager.startRangingBeaconsInRegion(region); 
       } catch (RemoteException e) { 
        e.printStackTrace(); 
       } 
      } 
      @Override 
      public void didExitRegion(Region region) { 
       Log.d(TAG, "I no longer see an beacon"); 
       try { 
        beaconManager.stopRangingBeaconsInRegion(region); 
       } catch (RemoteException e) { 
        e.printStackTrace(); 
       } 
      } 
      @Override 
      public void didDetermineStateForRegion(int state, Region region) { 
       Log.d(TAG, "I have just switched from seeing/not seeing beacons: " + state); 
      } 
     }); 

     beaconManager.setRangeNotifier(new RangeNotifier() { 
      @Override 
      public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
       for (Beacon beacon : beacons) { 
        Log.d(TAG, "distance: " + beacon.getDistance() + " , " + 
          "id: " + beacon.getId1() + ", " + 
          "id: " + beacon.getId2() + ", " + 
          "id: " + beacon.getId3() + ", "); 
       } 
      } 
     }); 
     try { 
      beaconManager.startMonitoringBeaconsInRegion(region); 
     } catch (RemoteException e) { 
     } 
    } 
} 

und hier ist mein Manifest und gradle:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

die gradle:

apply plugin: 'com.android.application' 
repositories { jcenter() } 
android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 
    defaultConfig { 
     applicationId "example.com.beacontest" 
     minSdkVersion 18 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'org.altbeacon:android-beacon-library:2.+' 
    compile 'com.android.support:design:23.3.0' 
} 
+0

Hat die App Berechtigungen? Gehen Sie zu Einstellungen-> Apps-> Ihre App-> und prüfen Sie, ob die Berechtigung erteilt wurde. Ich schlage das vor, weil Sie sagen, dass Sie auf Marshmallow ausprobiert haben, aber ich kann keinen Code sehen, der sich auf Berechtigungen bezieht. – driftking9987

+0

Ich glaube schon. Ich habe dem Manifest hinzugefügt und als ich zu AppInfo kam, sehe ich "auf Bluetooth-Einstellungen zugreifen und mit Bluetooth-Geräten koppeln" – gmmo

Antwort