run_prettify.js

2013年2月25日月曜日

SharedPreferencesのgetStringSetを使う場合の注意

SharedPreferencesはAPI11からSetを保存できるようになりましたが、こういうことをすると、一見上手くいっているようで上手く保存できなくなります。

/**
 * @return 保存したコレクション
 */
public Set getStringSet(){
 return sp.getStringSet(KEY, new HashSet());
}

/**
 * @param str 追加または削除する文字列
 * @return 保存に成功すればtrueを返す
 */
public boolean updateStringSet(String str){
 Set set = getStringSet();
 if(set.contains(str)){
  set.remove(str);
 } else {
  set.add(str);
 }

 return sp.edit().putStringSet(KEY, set).commit();
}

一見うまく動くんですが、プロセスが殺された後再度起動すると、前の値が保存されていません。しょぼーん。

色々試してみましたが、getStringSetのところでディープコピーすると正常に動作しました。

/**
 * @return 保存したコレクション
 */
public Set getStringSet(){
 Set saved =  sp.getStringSet(KEY, new HashSet());
 HashSet returnSet = new HashSet(saved.size());
 for (String str : saved) {
  returnSet.add(str);
 }
 return returnSet;
}

あんまりスマートではないけど、まあ解決したのでおっけー。

2013年2月24日日曜日

無効化マネージャー

無効化マネージャーをGoogle Playで公開しました。プリインストールアプリの無効化を補助するアプリです。

ダウンロードはGoogle Playからどうぞ→無効化マネージャー

機能

  • 無効化が可能で、まだ無効化されていないアプリの一覧を表示する
  • 無効化されたアプリの一覧を表示する
  • 無効化が不可能なシステムアプリの一覧を表示する
  • ユーザーがインストールした一般アプリの一覧を表示する
  • 表示中のアプリ一覧をメーラーなどに共有する
  • 一覧画面でアプリをタップすると設定画面に飛ぶ
  • 各アプリにコメントをつける
  • 実行中のプロセスのみ表示する
  • 変更日で表示・ソートする
  • 除外リストのインポート・エクスポート
  • 無効化済みリストを無効化推奨リストとしてエクスポート、そのファイルを別端末でインポートし無効化済み・無効化可能に分類して表示
変更日で表示・ソートする

v1.1.0で追加した機能です。無効化可能アプリ・無効化済みアプリについて、有効・無効を切り替えた日時を保存し、最近変更したものから順に表示できます。(設定>一般から変更可能)

既に「これとこれを無効化するといいよ!」っていう情報が出そろっている端末利用者にはあまり必要ないと機能だと思います。情報のないフロンティアが広がる端末を購入した際に、これを使ってちょっとずつ無効化を試していくと便利かなと思います。何か不具合が出たら、最近無効化したものから順に戻していけばおっけー、となります。

注意点があります。この機能は、v1.1.0以降の無効化マネージャーから「無効にする」ボタンを押しに行った場合のみ有効です。OSの標準機能ではないため、無効化マネージャー以外で行われた操作については検知できません。

実行中プロセスのみ表示について

実行中のプロセスを含んでいるアプリのみ表示するようになります。この機能を使うと、無効化を効率よく行えます。

ただし、無効化済みアプリについてはチェックの有無に関わらず全て表示されます(v1.2.3以降)。これは、チェックを入れたまま無効化作業を続けた後、有効に戻す際に迷子にならないようにするためです。

インポート・エクスポート機能

別記事にありますのでそちらをご覧ください。無効化マネージャー ヘルプ(インポートとエクスポート)

使い方など

起動すると、アプリ一覧を作成します(環境によってかかる時間に差があります)。最初は「無効化可能アプリ」の一覧が表示されます。

アプリをタップすると設定画面に飛びます。無効化したいアプリを選んで、「無効にする」を選択してください。

無効化済み、無効化不可、通常アプリの一覧も表示できます。

表示中リストの中身をメーラーなどに共有する機能があります。一通り無効化作業を済ませたら、無効化済み一覧を共有すると同じ端末を使っている人が喜ぶかもしれません。

共有のフォーマットは、「アプリ名」「パッケージ名」「両方」に加え、カスタムフォーマットが使用可能です。設定画面からフォーマットを変更できます。

アプリを長押しするとコメントを追加することができます。カスタムフォーマットを使えばコメントも共有できるので、無効化の弊害など特筆事項を記入して共有すると良いかもしれません。

無効化可能アプリの判定には、公開されているAndroidのソースコードの一部を使用しています。しかし実際に売られている端末は、キャリアやメーカーによって独自実装が施されている場合があり、確実に全ての端末で判定できるということは保証できません。既にSH-02Eにおいて、一部のドコモアプリが、無効化できないにも関わらず無効化可能アプリとして表示されてしまうのを確認しています。そういったアプリを見つけた場合は、手動で除外アプリに登録してください(長押し→「除外アプリに登録」)。

メニューから、「実行中のプロセスのみ表示」の設定を切り替えられます。このモードで表示される無効化可能アプリを無効化するのが一番効果的です。

v1.3.0で、長押しメニューからGoogle先生に飛ぶ機能を追加しました。そのアプリのアプリ名やパッケージ名の検索画面を開きます。私が個別アプリについての質問にお答えすることはできませんが、Google先生なら何かわかるかもしれません。

諸注意など

このアプリは、OS4.0.3以上対象、非rootユーザー向けです。アプリの無効化はAndroid(ICS以上)のOS標準機能です。

アプリの無効化は自己責任で行ってください。無効化可能アプリの中にも、無効化すべきでないアプリは存在します。

要求パーミッション

  • SDカードの読み込み・書き込み

除外リスト、無効化推奨リストのインポート・エクスポートに使用します。(v1.2.0以降)

動作環境

OS4.0.3以上で動作可能です。4.0.3、4.1.2、4.2のエミュレーターで動作確認をしています。

翻訳

Crowdin.netはオープンソースの場合無料で使えるとのことだったので、試してみました。

Source languageは一応Englishですが如何せんpoorなので、英訳の直しも大歓迎です。

Disable Manager Translations - Crowdin

ソースコード

以下のURLで公開中です。勉強も兼ねて作っています。ライセンスについてはREADMEをご覧ください。

https://github.com/75py/DisableManager

アイコンについて

ココナラというサービスであおきゅーさんに作っていただきました。絵心のないアプリ開発者には嬉しいサービスです。詳しくは別記事をどうぞ。無効化マネージャーのアイコンについて

今後の更新予定

  • 無効化済み一覧のインポート・エクスポート機能v1.2.0で実装
  • 一覧画面を、横スワイプで隣のタブに移動できるようにする

更新履歴

  • v1.3.1(2013/05/19)
    • XMLインポートのファイル選択の際、特定条件下で強制終了するバグを修正
  • v1.3.0(2013/04/29)
    • 長押しメニューに「検索」を追加
  • v1.2.3 2013/04/07
    • 「実行中プロセスのみ表示」のチェックの有無に関わらず、無効化済みアプリが表示されるように変更
    • 更新後、変更内容を表示するように
  • v1.2.2 2013/03/31
    • スクロールの際つまみが表示されるように変更
    • 実行中プロセスの表示形式を変更
    • 変更日によるソートの修正
    • 初回起動ダイアログでバックキーを無効に
    • アプリのテーマをDeviceDefaultからHoloに変更(一部端末での配色の乱れを修正)
    • メモリ不足による強制終了を抑制
    • その他強制終了するバグの修正
  • v1.2.1 2013/03/19
    • ファイル選択ファイアログで長いファイル名は複数行になるように修正
    • About画面にCrowdinへのリンクを追加
  • v1.2.0 2013/03/14
    • 初回起動時に確認ダイアログが出るように変更(一度OKを押せば二度と出ません)
    • 除外アプリのインポート・エクスポート機能を追加
    • 無効化済みアプリを無効化推奨リストとしてエクスポートできるように
    • 無効化推奨リストをインポートできるように
    • インポート・エクスポート機能追加のため、新たに以下のパーミッションを追加しました。
      • SDカードの中身の読み込み
      • SDカードへの書き込み
      (読み込みは将来的に追加されるパーミッションのため、現在は表示されないと思います)
  • v1.1.0 (2013/03/06)
    • 無効化可能アプリの有効
    • 無効を切り替えた際に日時を保存
    • 保存した日時を表示する
    • 最近のものから順に表示する
    • 表示とソートを有効にするかを切り替える設定項目を追加
  • v1.0.1(2013/02/25)
    • 除外アプリ一覧が正常に保存されないバグの修正
  • v1.0.0(2013/02/24)
    • Google Playで公開開始

2013年1月25日金曜日

無効化したアプリの一覧を作成するアプリ(野良)

以下は古い内容です。最新版はhttps://github.com/75py/DisabledAppsListからどうぞ。


ICSでは標準でプリインストールされたアプリの一部を無効化することができます。このアプリを使うと、無効化したアプリの一覧を作成することができます。

友人の「おめーと同じ機種買ったんだけど、何無効化すればいい?」という言葉からできたアプリです。

バグがなければ手が空いたときにplayに上げる予定。

ダウンロード

http://ux.getuploader.com/75py/download/4/List_Of_Disabled_Apps.apk

要求パーミッション

特になし。

使い方

起動後の数秒はアプリ一覧の取得をするのでお待ちください。読み込みが終わると、無効化済みアプリの一覧画面になります。

アプリをタップすると、OSの設定画面に飛びます。有効に戻すときに便利かなあと。

メニューから共有で、アプリ名・パッケージ名をメーラーなどに共有できます。

おまけ機能で、「無効化されていないシステムアプリ」「ユーザーがインストールしたアプリ」も一覧表示できるようになっています。「有効なアプリ(システム)」で無効化されていないシステムアプリを表示して、「さーて次はどいつを無効化してやろうか(にやにや)」って使えます。

2013年1月14日月曜日

Bashful Clock v2.1.3と次期バージョンについて

あけおめことよろです。この子は久々の更新ですが、バグ修正のみです。

  • 「ロック画面で常に表示」に設定しているとき、スリープからの復帰時にロック画面が表示されないと、エンドレスで表示し続けてしまうバグを修正しました。

「恥ずかしがり屋設定どこいったww」というバグでした。苦笑

あとは、targetSdkVersionを10から17に変更しました。3.x以上のOSだと、設定画面の見た目が変わるかも。

次期バージョンについて

今までにいただいた要望や僕の願望を基に、一から作り直そうと思っています。検討中の案は以下の通り。

見た目の設定をいくつか保持できるように

いらないかなーという気もしています。ただ、ちゃんと設計すれば難しくはないので実装する方針です。

背景画像

試してみて、重くならなければ設定できるようにしようかと。

設定画面の改善

実はこれが一番やりたいです。細かく設定するのが好きな人は今のままでも十分だと思うんですけど、ちょっととっつきにくいかなあと。プレビューを見ながら弄れるようにしようと思っています。現バージョンのカスタムビューの設定画面がイメージと近いですね。

他のアプリとの連携

TaskerやLlamaで表示する文字列を弄ったりとか。「時計以外、自分へのメッセージやタスクなどを表示できるようにしたら良いのでは」というご意見に基づいて、設計を検討中です。

色んな情報表示

今あるのは「和暦」「バッテリー残量」ですが、単なる文字列だったり、干支や祝祭日やらを表示できたら面白いかなあと。要するにカスタムフォーマットの拡張ですね。うまいこと、拡張の簡単な設計を検討中です。


とりあえずこんなもん? 今年度中にできればなーと思っているので、何か要望があればメールかこのエントリのコメント欄にお願いします。

2012年12月24日月曜日

文字数カウント v3.0.0

めりくりー、ってことで更新です。以下更新内容。

  • OS2.2未満のサポートを終了
  • 英文モードの単語数カウントで「-」を除外するように変更
  • デザインがOSのバージョンのデフォルトになるように変更

バージョン2.2未満の人はほとんどいないはずなので問題はないと思いサポート終了にしました。ちなみにアプリを作る側からすると、動作OS「2.2以上」「2.3以上」「4.0以上」あたりで壁があります。新しくアプリを作るときは4.0以上にしたいっていうのが本音です。

英文の単語数をカウントする際、ハイフンを除外するようにしました。これは英語圏の方からの要望に応えた感じです。

その他バグ修正のほか、色々更新しました。OSのバージョンが2.3より上の場合は、バージョンにあったテーマが適用されるはずです。

見た目はそれほど変わっていませんが中身がだいぶ違うので、バージョン名を2.xから3.xに上げてみました。もし不具合を見つけた方はこの記事のコメントかメール、ツイッターにてお願いします。

2012年12月19日水曜日

File Shortcut v2.1.0~v2.1.1

どうも最近時間が取れません。何とか今年度中にBashful Clockの改修を行いたいんですが……。以下v2.1.0の更新内容です。

  • アイコン選択で、ギャラリーアプリによるトリミングができるように
  • ファイルパスを直接編集できるように
  • 「プロセスをキルする」「ランチャーからの起動を無効にする」のオプションを追加
  • アイコンサイズが一部環境で小さくなってしまう不具合を修正
  • トリミングに関するバグの修正(v2.1.1で追加)

最初の二つはショートカット作成画面を見ればわかる通りです。従来のアイコン選択は、アイコンの大きさの正方形に収まるように縮小しています。ギャラリーでトリミングすると、一部を拡大したりできます。お好みでどうぞ。

追加した二つのオプションは、ランチャーから起動した画面を右にシュッってすれば出てきます。

「プロセスをキルする」っていうのは、なんか……あれですね、ルー大柴みたいですねw ファイルを開いた後にプロセスを消し去ります。通常はチェックを入れる必要はありませんが、メモリが少ない古めの機種を使用している場合は、他のプロセスを殺さずに済むのでじゃーっかん動作が軽くなる可能性があります。

「ランチャーからの起動を無効にする」は、メールでご意見いただいたものです。「アイコン邪魔だよ」とのことで、まあ非表示にできるランチャーアプリを使えばいいような気がするんですが、消したところで大して問題はないので、とりあえず追加した機能です。

これを有効にした後でも、ショートカット作成画面のメニューから同じ画面を起動できるので、お好みでどうぞって感じです。

あとはバグ修正がいくつか。特定の環境でアイコンが小さくなる不具合が主です。あと、2.3端末でICSっぽくするライブラリを外しました。アプリのサイズが小さくなったのはこのためです。

今後の更新予定

要望をもらったら対応する、くらいにしか考えていません。もう僕が思いつくことはやりました。

しいて言えば「アプリ使用履歴に残さないでくれ」っていう英語のレビューをもらってるのでそれかなあ。試したけど何故か上手くいかなかったので今回は保留にしました。他の方からも要望があれば本腰を入れてやりますが、あまり僕は必要性を感じていません。履歴ボタンなんて使わずSwipePadなりssFlickerなりに登録した方がぜーーったい便利だと思うので。

何かありましたら気軽にメールやツイッターでご連絡ください。技術的に不可能でなければ頑張って対応します。

2012年11月25日日曜日

File Shortcut v2.0.0-2.0.1

久しぶりに更新した気がします。Nexus7買ってルンルンしながら作りました。以下v2.0.0変更内容。

  • UIの刷新
  • ファイル選択をファイラー・ギャラリーからも可能に
  • MIMEタイプの編集を可能に
  • ウェブページへのショートカットを廃止
  • バグ修正(大きい画像を選択しても落ちないように)
  • 横画面でOKボタンを押せない不具合の修正(11/26 v2.0.1)

UIっていうかアプリ自体、一から作り直しました。ICS未満の端末でもISCっぽくなったと思うんですがいかがでしょうか。従来のダイアログ方式はあまり使いやすくないなと思ったので、こんな感じになりました。だいぶマシになったと自分では思ってます。

ファイラー・ギャラリーアプリからもファイルを選べるようになりました。一応PDFとかもあるだろうから共有からの追加にも引き続き対応しています。

ウェブページへのショートカットは廃止しました。「『ファイルショートカット』にウェブページは相応しくない」「処理が複雑になる」「他のアプリで代用できる」などが理由です。ただ、それなりに有用だとは僕自身も思っているので、これから別アプリとして作成します。

待てねーよksって人は、前のバージョン(記事末尾参照)を使うか、他のアプリで代用してください(Desktop VisualizeRでURLをコピーした状態でアクションをクリップボードにするとできます)。

アプリのサイズがでかくなったのは、ICS未満をICSもどきにするライブラリを追加したためです。

MIMEタイプについて

ファイルの形式だと思ってください。例えば、テキストファイルなら「text/plain」、画像なら「image/jpeg」とか「image/png」って感じです。

ファイルの拡張子で自動判別するので、通常は編集する必要ありません。というか、ファイルを開くアプリを決める情報なので、下手に弄ってしまうと正しくファイルを開けなくなります。

この項目を編集できるようにしたことで、「拡張子がないファイルにも手動でファイル形式を入力できる」「動画ファイルを音声ファイルとして開く」みたいなことができるようになります。MIMEタイプがどんなものかわかっている方のみ使用してください(そのうちヘルプみたいなのを書くつもりです)。

不具合など

テストは念入りにしたつもりですが、まだバグ持ちの可能性もあります。もし全く動かないという場合は前バージョンを使ってください。多少安定はしているはずです。

http://ux.getuploader.com/75py/download/1/File_Shortcut_1.1.0.apk

また、前バージョンで「Nexus7(JB)で『対応していない』と言われる」というご報告がありましたが、僕のN7ではこの症状を確認できませんでした。

以上です。何かありましたらコメント欄、またはメール、ツイッターでご連絡ください。