バスくる for 相鉄

事後報告ではありますが、「バスくる for 相鉄」を公開停止にしました。

■停止理由
相鉄バスナビサイトがリニューアルされた。
・リニューアル内容が、バスくる開発時と比べて、大きく異なる。
・リニューアル後の情報を、バスくるで取得するのが困難。

Xperia Z5対応その3

クラッシュレポートの件は対応して、API22でもビルドした。
でも、これで良いのだろうか。

新たにレビュー投稿されていた。

                                                      • -

Android5でクラッシュする Xperiaユーザーです。Android4で使っているときはとても重宝していました。Android5へUpgradeした途端、通知がくる度に画面がブラックアウトして、Android5のホームボタンやタスク切り替えが使えなくなり、強制リセット以外で復旧できなくなります。直してもらえませんか?とても重宝してたものですから

                                                      • -

ご利用ありがとうございます^^

公開してるからには何とかしたいのは山々ですが、個人アプリなので全OS・全端末に対応するのは無理です。
なので、こういう細かい情報は大変助かります。
文章も丁寧ですし、何とかしてあげたいなあ〜、いや!何とかしますよ!!


さてさて、現象はコレか。

通知がくる度に画面がブラックアウトして

なるほど、通知の時か。。。
エミュレーターで検証してみたら、1回目の通知はOKで2回目以降がダメだった。
1回目と2回目で違うところは、次の通知設定をするところかなあ。

バスくるは、一定時間ごとに通知する為に、”通知→次回通知時間設定→通知終了”を通知する度に繰り返してるのです。

/**
 * サービスの次回起動を設定します。
 */
private void serviceBootNext() {
	// 次回起動時刻を設定します
	long now = System.currentTimeMillis();
	alarmSender = PendingIntent.getService(AccessNoticeService.this, 0, new Intent(
			AccessNoticeService.this, AccessNoticeService.class), 0);
	AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

	int noticeInterval = DEFAULT_INTERVAL;
	SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	boolean accessNow = sp.getBoolean(ACCESS_NOW, false);
	if (!accessNow) {
		noticeInterval = sp.getInt("noticeInterval", DEFAULT_INTERVAL);
	}

	am.set(AlarmManager.RTC, now + noticeInterval * 1000, alarmSender);

	// サービスを終了します
	AccessNoticeService.this.stopSelf();
}

このコードの何処かに、5.1のお作法に合わない書き方があるのかな、、、う〜ん、分からん。。。

Xperia Z5対応その2

GenymotionのGalaxy S6-5.1.0-API22 で動かしてみたら、確かに画面がブラックアウトした。
OS巻き込むエラーって何だよ。。。

自分のスマホはAndroid4.2.2だが、近々スマホを買い替えたいと思ってる。
すなわち、自分にも近い将来訪れる問題なので、早急に解決したい。

まずは、クラッシュレポートの内容を見てみよう。

  • java.lang.IllegalStateException: ActionBarContextView can only be used with android:layout_width="match_parent"

ココに書いてた。

container.addView(childActivity.getDecorView());
↓
container.addView(childActivity.getDecorView(), new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));

とすれば良いらしい。

  • java.lang.RuntimeException: An error occured while executing doInBackground()

ココに書いてた。
記事では、原因は”ぬるぽ”みたいだけど、バスくるだと↓コレか。

Caused by: org.buskuru.tokyu.exceptions.ServerConnectionException: org.apache.http.conn.HttpHostConnectException: Connection to https://play.google.com refused

Caused by: org.buskuru.tokyu.exceptions.ServerConnectionException: java.net.UnknownHostException: Unable to resolve host "play.google.com": No address associated with hostname

バスくる起動時に、Playストアのバスくるバージョンを取得して、ユーザーにバージョンアップを促す処理なんだが、Playストアの直叩きはマズいのか。。。
仕方ない、、、廃止しよう。


上記を修正して、API22でビルドして、それで直れば良いんだけどなあ。