スポンサー広告 - スポンサーサイト

--/--/-- (--) --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Android】壁ちぇん。 - バージョン 1.0.2

2011/10/23 (日) 13:37

■変更点
1.【ファイル設定】の【読み込み先】に[パスを指定する]を選択している場合且つ、【パスを指定】に存在しないパスを設定した場合、壁紙変更処理で例外が発生する不具合を修正。
2.ストレージ内のデータ取得処理で例外が発生する場合がある不具合の暫定対応。
3.壁紙変更タイミングに毎週月~日曜日、毎月1日の7パターンを追加。
4.広告モジュールがバージョンアップしたので更新。

■詳細
1について
①設定時に存在しないパスが設定された場合にトーストでアラートを表示する。
②壁紙変更処理の手前で、設定されたパスが存在するかどうか検査し、存在した場合だけ読み込む。
の2つの対応で凌ぐことにしました。
設定されたパスは、設定時には存在したけど壁紙変更のタイミングには存在しないかもしれないのでこのような対応に。
ただし、②の場合にはアラートは出していません。

2について
正直根本的な原因がわかっていません。
シチュエーションとしては、内部ストレージからの取得処理で getContentResolver() でカーソルを取得しており、そのカーソルに対して moveToNext() した処で例外が発生している模様。
moveToNext() はデータが存在しなければ false が返るだけで例外が起こるはずはないのだけども、どうなっているのか。
そもそもカーソルがNULLで返っているということだと思われるが、理由につてはあんまり追求したくないなぁ(汗)
とりあえず、カーソルに対するNULLチェックを行い、NULLではない場合だけ処理を続行するようにしました。
こちらもNULLの場合でも特にアラートは出しません。

3について
完全に蛇足です。
不具合の修正とか、広告モジュールの更新だけでは味気なかったので無理やり追加しました。
個人的には全く需要がありませんが、世の中には求めている人がいるかも?という淡い期待を込めてということで。

4について
単純に通知があったので差し替えです。
が、jarの差し替えだけでは対応できず、少々ソースも修正しました。
何が良くなったのかはわかりません(汗)

今回はこんな感じ。
スポンサーサイト

【Android】壁ちぇん。 - バージョン 1.0.1

2011/05/21 (土) 14:58

さっそくバージョンアップ。

■変更点
1.機能を有効にして自動起動をOFFにしている状態でOSを再起動した際に、設定画面では機能が有効になっているのにタイマー(AlarmManager)が作動しない不具合の修正。
2.広告の表示で時間がかかりすぎてタイムアウトしてしまう場合があったので、広告表示の処理をスレッド化。
3.アプリケーションのバージョンアップ時に、タイマー(AlarmManager)を再設定する処理を追加。

■詳細
1については、単純な場合分けの考慮漏れです。がっくし。
OS起動時に自動起動が無効な場合は、有効/無効フラグをOFFにする処理を追加しました。

2については、AdMakerの指定の実装方法とは少々異なる実装をしたのだけれども、たまたま自分で確認したときに事象が発生したので対応しました。
設定画面は「PreferenceActivity」で行っているので、画面の下側に常に表示するにはどうしたらよいか色々調査した結果、動的に上から「LinearLayout」を被せてしまうことに。
この方法だと「PreferenceActivity」がスクロールしきったときに広告の部分が重なってしまうので、「PreferenceActivity」の最後尾に広告と同じ高さの領域をダミーで仕込んでおく。
こんな感じ

public class KabechenPreference extends PreferenceActivity {

/**
* スレッド用のハンドラ
*/
private Handler handler = new Handler();

/**
* 広告オブジェクト
*/
private libAdMaker adView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);

// 広告
adView = new libAdMaker(this);
adView.setActivity(this);
adView.siteId = "siteId"; // 設定値は契約毎に異なる
adView.zoneId = "zoneId"; // 設定値は契約毎に異なる
adView.setUrl("Url"); // 設定値は契約毎に異なる

// 表示に時間がかかることがあるのでスレッド化
new Thread(new Runnable() {
public void run() {
// レイアウトに変更を加えるので Handler を使用
handler.post(new Runnable() {
public void run() {
adView.start();
adView.setVisibility(android.view.View.VISIBLE);

LayoutParams adLayoutParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
adView.setLayoutParams(adLayoutParams);
LinearLayout linearlayout = new LinearLayout(getApplicationContext());

linearlayout.addView(adView);
linearlayout.setGravity(Gravity.BOTTOM);

LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
addContentView(linearlayout, layoutParams);
}
});
}
}).start();

}
}

addPreferencesFromResource しているXMLの PreferenceScreen タグの中の最後に以下を追加。
<!-- 広告 -->
<Preference
android:selectable="false"
android:layout="@layout/dummy"
/>

android:layout に設定しているレイアウトは以下。
<?xml version="1.0" encoding="utf-8"?>
<View
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dummyid"
android:layout_width="fill_parent"
android:layout_height="48dp"
/>


3につては、バージョンアップの必要性が出てきたので影響を調査していたところ、壁紙変更のタイミング設定は AlarmManager で実装してるのだけれども、なんとアプリバージョンアップ時に設定が消えてしまうのだとか。
バージョンアップ後に、設定画面で「有効/無効」を再設定してもらえればいいのだけども、わずらわしいので自動で対応したい。
なんとかバージョンアップのタイミングを取得しようと調査したところ、「android.intent.action.PACKAGE_REPLACED」というブロードキャストが投げられるとのこと。
んが、指定のアプリのバージョンアップのみの通知を受け取ることがかなわなかった。
調査の過程でマニフェストのインテントフィルタに
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="tak.tools.kabechen" />
</intent-filter>

とか書けばフィルタリングが可能とあったが、エミュレータ、実機(IS05)共に絞り込みはできず、
結局は BroadcastReceiver に以下の記述を施した。

public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(Intent.ACTION_PACKAGE_REPLACED.equals(action)){
String uri = intent.getData().toString();
if("package:tak.tools.kabechen".equals(uri)){
// 機能が有効ならアラームを再設定する処理を実装
}
}
}

一々通知を精査するのもどうかと思うが、当面はこれで。他に良い方法が見つかれば変更するかもしれない。

長くなってしまったけれども、今回の変更の詳細は以上です。

【Android】壁ちぇん。 - 最初のリリース

2011/05/20 (金) 21:33

Android向けアプリケーション第二弾。

壁ちぇん。

自分で使うために作ってみたものを一般向けに調整してみました。
こちらも勉強の一環。
広告についても調べてみたので実装してみました。
つか、一度設定したら基本的には広告の出る画面を立ち上げないので、ほぼ効果はないと思われる(汗)
検索フォーム
RSSリンクの表示
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。