微妙な試行錯誤
随分前にでっち上げた万歩計な実装を github の勉強も含めて育ててるんですが、全然動かない。
とりあえず昨晩時点で ContentProvider を手慣れたナニに書換えたのですが、よくよく動作を見てみるに、歩数計測な Service が起動していなかったりして。
で、なんとなく Service が動きはじめているようなので branch して
$ git checkout -b hoge
修正を反映させて commit 作成。
$ git add . $ git commit -m 'temp commit'
そして肝心な修正のみを盛り込む branch を作成。
$ git checkout master $ git checkout -b butFix-20130718
で、どうするか (何
とりあえずな対応の diff が以下。
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index bd0f0c0..1bca0e5 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3,6 +3,12 @@ package="jp.shuri.android.pedometer" android:versionCode="1" android:versionName="1.0"> + + + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> + <uses-sdk android:targetSdkVersion="15" android:minSdkVersion="15"/> + + <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:screenOrientation="landscape" @@ -26,6 +32,12 @@ <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="jp.shuri.android.pedometer" /> </intent-filter> + <intent-filter> + <action android:name="android.intent.action.PACKAGE_ADDED" /> + <action android:name="android.intent.action.PACKAGE_REPLACED" /> + <data android:scheme="package" /> + </intent-filter> + <!-- <intent-filter> <action android:name="android.intent.action.SHUTDOWN" /> @@ -47,7 +59,4 @@ android:authorities="jp.shuri.android.pedometer.PedometerProvider" /> </application> - -<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> -<uses-sdk android:targetSdkVersion="15" android:minSdkVersion="15"/> </manifest> \ No newline at end of file diff --git a/src/jp/shuri/android/pedometer/MainReceiver.java b/src/jp/shuri/android/pedometer/MainReceiver.java index ed12648..532c68e 100644 --- a/src/jp/shuri/android/pedometer/MainReceiver.java +++ b/src/jp/shuri/android/pedometer/MainReceiver.java @@ -15,6 +15,7 @@ public class MainReceiver extends BroadcastReceiver { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { */ Log.d(TAG, "BOOT_COMPLETED"); + Log.d(TAG, "intent.getAction() : " + intent.getAction()); Intent i = new Intent(context, MainService.class); context.startService(i); /* diff --git a/src/jp/shuri/android/pedometer/MainService.java b/src/jp/shuri/android/pedometer/MainService.java index 0f410b3..22cf64e 100644 --- a/src/jp/shuri/android/pedometer/MainService.java +++ b/src/jp/shuri/android/pedometer/MainService.java @@ -70,7 +70,7 @@ public class MainService extends Service implements SensorEventListener { Cursor mCursor = context.getContentResolver().query(Contract.Log.contentUri, null, Contract.Log.columns.get(2) + " = " + queryString, null, null); - if (mCursor == null) { + if (!mCursor.moveToFirst()) { Log.d(TAG, "no records"); ContentValues initialValues = new ContentValues(); initialValues.put(Contract.Log.columns.get(2), queryString); @@ -119,11 +119,12 @@ public class MainService extends Service implements SensorEventListener { String queryString = getQueryString(); Cursor mCursor = getApplicationContext().getContentResolver().query(Contract.Log.contentUri, null, Contract.Log.columns.get(2) + " = " + queryString, null, null); - if (mCursor == null) { + if (!mCursor.moveToFirst()) { Log.d(TAG, "query returns no row"); count = 0; } else { - count = mCursor.getInt(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1))); + count = Integer.parseInt(mCursor.getString(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1)))); +// count = mCursor.getInt(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1))); Log.d(TAG, "count = " + count); } debugPrint();
とりあえず対処したのは三点。
- Manifest で permission とか version なエントリを前に移動
- Manifest における intent-filter の追加
- Service でのデータの読み込みの方法
でも、微妙な例外が出てるんですが、これって Huawei 特有なのかどうか。