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
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'
}
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
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