i try to develop app with using Becons. I have this small Estimote Beacon. I made steps described in this short instruction. I downloaded the library from github, I added it to myproject.
My code look like this,
public class MainActivity extends Activity {
BeaconManager beaconManager;
private static final String ESTIMOTE_PROXIMITY_UUID = "B9407F30-F5F8-466E-AFF9-25556B57FE6D";
private static final Region ALL_ESTIMOTE_BEACONS = new Region(ESTIMOTE_PROXIMITY_UUID, null, null);
final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "onCreate");
beaconManager = new BeaconManager(getApplicationContext());
if(beaconManager.isBluetoothEnabled())
{
Toast.makeText(getApplicationContext(), "Bl włączone", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "Bl wyłączone", Toast.LENGTH_LONG).show();
}
beaconManager.setRangingListener(new BeaconManager.RangingListener() {
@Override public void onBeaconsDiscovered(Region region, List<Beacon> beacons) {
Log.d(TAG, "Ranged beacons: " + beacons);
Toast.makeText(MainActivity.this,"Ranged beacons: " + beacons, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.e(TAG, "onStart");
beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
@Override public void onServiceReady() {
try {
beaconManager.startRanging(ALL_ESTIMOTE_BEACONS);
Toast.makeText(getApplicationContext(), "try start ranging", Toast.LENGTH_LONG).show();
} catch (RemoteException e) {
Log.e(TAG, "Cannot start ranging", e);
Toast.makeText(getApplicationContext(), "Cannot start ranging", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
// Should be invoked in #onStop.
try {
beaconManager.stopRanging(ALL_ESTIMOTE_BEACONS);
} catch (RemoteException e) {
Log.e(TAG, "Cannot stop but it does not matter now", e);
Toast.makeText(getApplicationContext(), "Cannot stop but it does not matter now", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
// When no longer needed. Should be invoked in #onDestroy.
beaconManager.disconnect();
}
}
and manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.beacon"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
<!-- Needed permissions in order to scan for beacons. -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<!-- Declaration that this app is usable on phones with Bluetooth Low Energy. -->
<uses-feature android:name="android.hardware.bluetooth_le"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service android:name="com.estimote.sdk.service.BeaconService"
android:exported="false"/>
<activity
android:name="com.example.beacon.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
< /application>
</manifest>
showed on the page and I get this message
02-22 05:27:08.711: A/BeaconManager(7227): Could not bind service
For me it means like it's problem with creating BeaconManager, but have no idea how to fix it. There is no problem with device cause I see all beacons when I scanned it by iBeacon Locate
app. I would be grateful for any suggestion
Which version of Estimote SDK are you using? Is it the newest 0.4 version? Checking it as newest has different log tags.
If logs says "Could not bind service" that means that com.estimote.sdk.service.BeaconService
could not have been found. Note that early version of the SDK BeaconService
was in com.estimote.sdk
package and not in com.estimote.sdk.service
one.
BTW were you able to run Demos in the Estimote SDK?