Domanda

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

È stato utile?

Soluzione

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top