まず第一に、私がしたことはリンクに似ています( Android iBeacon Library - How to bind IBeaconManager to service in remote process ):
- Serviceを拡張してIBeaconConsumerを実装する 独自の MyIBeaconService を定義しました。IBeaconManagerメンバーを含み、バインド/アンバインドなどの対応する API を提供します。onIBeaconServiceConnect()では、 MonitorNotifierとRangeNotifierを設定し、監視とレンジングを開始し、対応するノーティファイアのコールバックが呼び出されたときにアクティビティにインテントをブロードキャストします。
- メイン アクティビティは MyIBeaconService にバインドし、対応するBraodcastReceiverをonResume()に登録します。
- 次に、メイン アクティビティが MyIBeaconService に正常にバインドされたら、ServiceConnection::onServiceConnected() で IBeaconManager.bind を呼び出して MyIBe aconServiceをIBeaconServiceにバインドします。
ただし、MyIBeaconService::onIBeaconServiceConnect は呼び出されていません。上記のリンクの回答に基づいて、生成された AndroidManifest.xml ファイルを以下に投稿しました
。 1. MyIBeaconService の AndroidManifest.xml
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application android:allowBackup="true">
<service android:name="com.xxx.ibeaconlib.MyIBeaconService">
</service>
<service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="iBeacon" android:name="com.radiusnetworks.ibeacon.service.IBeaconService">
</service>
<service android:enabled="true" android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor">
</service>
</application>
2. MyIBeaconService の project.properties
target=android-19
android.library=true
manifestmerger.enabled=true
android.library.reference.1=../../../Downloads/AndroidIBeaconLibrary
3. 私の Android アプリケーションの AndroidManifest.xml
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
<activity android:label="@string/app_name" android:name="com.radiusnetworks.ibeaconreference.MonitoringActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="com.radiusnetworks.ibeaconreference.RangingActivity">
<intent-filter>
</intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="com.radiusnetworks.ibeaconreference.BackgroundActivity">
<intent-filter>
</intent-filter>
</activity>
<service android:name="com.xxx.ibeaconlib.MyIBeaconService">
</service>
<service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="iBeacon" android:name="com.radiusnetworks.ibeacon.service.IBeaconService">
</service>
<service android:enabled="true" android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor">
</service>
</application>
4. Android アプリケーションの project.properties
target=android-19
manifestmerger.enabled=true //please confirm this line is added and remove the comment then
android.library.reference.1=../../Documents/workspace/iBeaconLib