2012年9月25日火曜日

[FlipClip]Android3.0以上の対応


techboosterさんのとこの記事にあったのを自分の端末が生姜パンだったから見ないことにしてたの忘れてました。

Android3.0以上の場合、クリップボードマネージャにリスナーを設定できるみたい。
なので、3.0以上の人しか利用できないけど、「リスナーを利用」オプションを追加しました。

今までのと何が違うのかっていうと、クリップボードに値が貼り付けられたイベントを取得して値を保存します。
こうする事によって何が良いかっていうと、、、

①アラーム(タイマー)によるクリップボード監視処理がなくなる。
②連続コピーしてもすべてクリップ出来る。

あら、いいことづくめ。

フリーもプロも実装してあります。
僕のところでは今のところ特に問題なく動いているみたい。
連続コピーチョーきもちーーー!!(そんなでもない)

ハニカム、アイスサンド、ゼリービーンの方はお試しあれ。

例によって、死に「にくい」サービスで実装しているので、もし死んじゃったらごめんなさい。
設定のチェック付け直しで再起動します。

画面ON/OFFのブロードキャストで行こうかと思ったけど、なんか無駄にコスト高くなりそうだし、消費メモリもほぼ最低限なので常駐させることにしました。

※余談ですが、死ににくいサービスは僕の端末で死んだことはありません。


2012年9月24日月曜日

マネタイズについて


ちょっと、前の記事書いてたら思ったので書いておく。

有料機能を無料で利用するとか、広告を非表示して使うとか、良く言えば抜け道・裏ワザ(良くもないか)みたいなもんですけど、サービス提供者にとっては「おいおいまじかよっ!」てなことになるので、あんまりやらない方がいいですよね。
僕は、気に入ったアプリは有料があれば買うようにしてます。開発者の気持ちわかるから。

有料なしの広告だけっていうのは、広告切ってます。(ごめんなさい)
せっかくいいアプリなのに広告が台無しにすることもあるから、ぜひとも広告なしバージョンを作ってほしいですね。
インターネット接続の消費電力がでかいってことは、もう周知の事実だから。
※似た機能で作れそうなものは自作してるけど、そうでないものもあるので。

そもそもアプリ作れる人なら、広告切ることができるなんて知ってるだろうし、そういう人数も考慮済みなんじゃないかなぁ。
少なくとも、僕の無料広告アプリは、そういうことをされても別にいいと思っている。

僕はといえば、最初は広告入れたアプリよく作ってたけど、最近は入れなくなった。
・利用者の立場になったときの、広告のうざさがアプリの便利さを上回ることがある
・インターネット接続権限が付いちゃう(何もしてなくても怪しまれるね)
・利用中の消費電力を削減するため(せっかく省電力省メモリで作っても広告に台無しにされることがある)
・無料版と有料版を作るのがめんどくさい(管理がめんどい)
・広告解除のアプリ内課金を作るのがめんどくさい(アプリ内課金あんまり好きじゃない)


なので、最近のマイブームは「無料版」と「機能増強の有料版を作る」です。

無料版はあくまでお試し版。
基本機能が思いついたら、さくっと作って公開。
たどりついた人にちょっと利用してもらって、要望や意見を取り入れながらオプション追加等で改善していく。
 →ありがたいことに、いろいろ要望いただけるので。
落ち着いてきたら、要望を拝借することもありますが、有料機能を検討→公開。

最近の開発は大体こんな感じの流れ。

ただ、有料機能に入れる前に無料に盛り込みすぎてまぁいっかってなっちゃうのもある。
「透けテルっっ!!」とか。


そんなこんなで、僕のマネタイズに関する気持ちを振り返ってみるとこんな感じ。
2011年の7月からアプリ開発やり始めたから、もう1年ちょっと経たけど、いろいろ考え方が変わってる。

一発当ててやるか!
広告と有料ってどっちが儲かるんだ?
(うひゃひゃ、アプリ売って金儲けじゃぁ!期)
 ↓
売れないし、広告収入しょぼいぜ。
こんなのあればいいのになぁ。。よし、じゃぁ作るか!
(完全自己満アプリ製造期)
 ↓
要望だと!そういうのが来るのか!
よーしおじさんに任せときな!
(要望に応えるのが楽しくなってくる期)
 ↓
広告なんてうっとうしいばっかりでこっちのメリットもなんもないぜ!やめだやめだ!
無料版で基本機能作ったら、要望を重視したアプリを作ることにする!
(他人任せ期)
 ↓
やべー要望めっちゃくる。
自分の意見が取り入れられるとうれしいんだね。
喜んでもらえてこっちもうれしいよ。
対応できないものについてはごめんなさい。
みんなの意見をすべて取り入れるのは無理なんだぜ!
(風呂敷広げすぎたと後悔期)
 ↓
あー、やっとアプリ落ち着いてきた。
自分が欲しい機能はもうとっくに出来ちゃってるから、様子見するぜ。
(サボってた本職の方のツケがまわってくる期)
 ↓
下手に流行ると対応がめんどくせーな。
知ってる人たちだけでこっそりやりたいな。
ちょっと詳しい人たちを相手にしたいな。
(わがまま期)
 ↓
クソっ、オープンソースにしてメンテやめようかな。
(対応放棄期)
 ↓
よし、いったん忘れる。
(ふりだしに戻る期)
 ↓
あーー、ここがマジ使いにくい。
そうか!この機能を本来の意味とは違うこういう風に使えば!
なんか新しいの出来たぜ!
新しい機能のアプリ考えるの楽しい。
(抜け道探し期)
 ↓
ちょっと落ち着いてきた。
逆に本職が忙しくなってきた。
たまってた要望やらないとなぁ。
(今)


最初は手軽にお金儲けしたいなぁって感じだったけど、あれだけがんばって息子のおむつ半月分くらいにしかならないので、金儲けの線はあきらめた。
※お金にならないのはセンスがないからだという事は自負しておりますので、突っ込まないように。
売り上げは、息子のおむつ代としてありがたく利用させていただいてます。

金儲けっていうよりは、自分の技術を安売りしないように有料版も作っています。
最近は積極的なマネタイズを考慮していませんが、それでも有料版を買っていただけるとありがたいです。
だって、リアルマネーは活力に直結するでしょ?


あ、いや、違う。
買ってアピールしたかったわけじゃない。
無料でもそこそこ使えるようには設計してるつもりなので、まずは無料版を^^

[instadroid]ごめんなさいね


※最初に言っておくと、このアプリをメンテナンスする気はありません。

あんまりよくない評価が多いです。
なんだか、出来の悪い開発者みたいなので、ちょっくら言い訳しちゃおう。

此れ、僕が使いたくて作ったんですけど、僕も今は使っていません。
オフィシャル版使ってるから。

まず、結構勘違いされている方が多いんですけど、instapaperはAPIを利用するのに月1$のお布施が必要です。
APIって何?っていうと、フォルダの一覧を取得したり、登録されている記事の一覧を取得したりする機能のこと。
くわしくはこの辺を読んでね(http://www.instapaper.com/api/simple

で、これは僕がお金を払えば何とかなるものでもなくて、利用する人(ログインしてる人)が払わないといけない。
というInstapaperへのお布施による機能利用制限が入っています。

だから、本家Instapaperアプリも有料だし、ほかの開発者が作成したアプリもちゃんと使いたかったら別途instapaperにお金払ってね^^っていうの多いし。

ただ、無料で利用できるAPIもあります。
・フォルダ一覧取得
・Read Laterの中身の一覧取得
・Read Laterに追加

これが、無料でInstapaperアプリを作る上での制限になります。
逆に言うと、無料ではこれしかできないのさ。

あれ?でも「Instadroid」ってフォルダの中身見れんじゃんね?
ふふふ。。そりゃ、ほら、あれですよ。
通常のInstapaperページダウンロードして、正規表現で無理やり中身取得してますから。
 ↑
カンのいい方はお気づきでしょうが、HTMLダウンロードしてるなら、そのまま表示した方が早いです。

何でこんなことをしているのかというと、無料でどこまで出来るのかっていうチャレンジみたいなもんです。
もちろん、ページの解析に多くのメモリを使うことになりますし、正規表現で取得しているので変なタイトルのものがあると、解析に失敗するかもしれません。

このアプリ結構グレーだと思っています。
このアプリが流行ると、Instapaperのマネタイズをモロ妨害してしまうから。
だから(ってわけでもないんですけど)あんまり優秀なアプリにしたくないです。

というのも、以前、Android版Instagramが来る前に、似たような仕組みでInstagramの検索と表示アプリ作ったんですけど、Googleにrejectされたので。
これは、時期が悪かったのと、外人に広まって僕の稚拙な英語を勘違いしてアップロードできねーじゃねーか!これは詐欺だ!!なんて叩かれまくったからなんだけど。
多分、不正なアプリ報告を一定量されたんだろうなぁと思いつつ。
(アイコンにUnofficialって書いておいたのに。。ぐすん。)
おかげで外人クレーム耐性ついたからまぁいいか。


そう、愚痴っぽくなったけどバツイチなんです。
不正アプリ何個送り出すとアカウント凍結されるかわからないけど、びくびくしてます。



というか、オフィシャルアプリ出たから公開停止しようかなぁなんて思ってたの忘れてた。
もうちょっと派手になり始めたら消そう。(ならないと思うけど)

[SwipeStarter]スクリーンの輝度設定が反映されない


「SwipeStarterを入れているとスクリーンの輝度が反映されませんっ!」っていう質問が幾つか来たのでここに結果を報告します。

結果から言うと、SwipeStarterはシロでした。

[確認方法]
SwipeStarterの自動起動をOFFにして端末再起動→これでSwipeStarterは完全に起動していません。(不安なら、設定バックアップとってアンインスコしてください)
この状態でご指定のアプリにてスクリーン輝度の設定を行い、正しく反映されないことを確認。

SwipeStarterが起動していない状態でも同様の現象が起こるという事は、SwipeStarterは関係ないという事です。
※そもそも、輝度設定の権限を持ち合わせていないので、SwipeStarterが設定を上書きするという事はないと思いますが。


質問をいただいた何名かの方から指定された「結果が正しく反映されなかった輝度設定アプリ」については、ここでは紹介しません。
ただ、「Display brightness」というアプリを入れていただき、確認してもらったところ、正常に輝度設定が行えたようです。

「Display brightness」
https://play.google.com/store/apps/details?id=rubberbigpepper.DisplayBrightness

ここからは調べてもいないので想像ですけど、
・アプリによって挙動が違う
・輝度設定が繁栄されない端末はICS(とのことでした)

であることから、おそらく輝度設定のロジックがICSになってから変わってしまったのではないかと思います。
過去にも、無音バイブ設定でアイコンが2個表示されるようになったりとかいう修正されちゃったりとかもあるので、結構濃厚?

開発者泣かせですね。

まぁ、「Display brightness」では出来ているんだから、きっと出来るんでしょうね。
輝度設定アプリ開発者さま。がんばってください。



あ、でも、もしかしたらSwipeStarterで関連があるかも知れないっていうのが2か所だけあるので書いておきます。
・ICS以降でステータスバー上にマーカーを配置
・「アプリ設定」→「マーカーの表示レイヤー」をON

これをすると、マーカーの表示レイヤーがスクリーンロックよりも前になります。
これは画面のちらつきを抑えるため&ステータスバーより前にマーカーを表示するための設定なのですが、もしかしたらこのレイヤーの位置が悪さをする可能性がなくもないような気もしなくもないです。

僕の端末では特に干渉していないようでしたが、このあたりのレイヤーが表示されていることを感知して画面輝度を調整するようなOSチューニングが入っていた場合は影響しちゃうかな。
→そんな必要あるのか?できるのか?って感じですけど、、、
 できるできないは置いといて、たとえば、スクリーンロック表示時に自動で輝度をある程度明るくしてあげるような機能とか。

常に生きているプロセスは、マーカー表示プロセスだけなので、強いて言うなら、おそらくレイヤーの位置かなぁって感じです。
個人的には、レイヤーの位置で輝度に影響が出るなんてことはないと思っています。

ですが、仮に、SwipeStarterを終了させたら問題なく動くんですけど~!っていう場合があれば、おそらくこれです。
この場合、マーカーの表示位置を後ろに下げるわけにはいかないので、対応は出来ないです。
OSカスタマイズしたメーカーを恨んでください。(ウソ)

最後は投げやり開発者。
すみません。

2012年9月21日金曜日

[タップマッシュ]作りました。


FlipClipのタップ起動を作った時に思いついた。

ダブルタップしたら、マッシュルーム一覧を表示。
マッシュを選択して戻ってきたらクリップボードに保管。
長押しで貼り付け。

マッシュルーム対応IMEを使っていない人向け。

ステータスバーから起動するよりは早いよね。

※注意※
FlipClipと干渉します
FlipClipの有料版の機能でもあるので100円で売ります。
https://play.google.com/store/apps/details?id=tora.mamma.tapmush

ここにたどり着いてる人には野良であげます。
https://www.dropbox.com/s/b2cis3s4w4bpuhz/TapMush.apk

設定は、例によってユーザ補助から行ってください。

2012年9月19日水曜日

[FlipClip]ICS以降向け修正しました


経緯:ICSで貼り付けダイアログの仕様がかわっちったので悩んでました。
[変わっちゃったクソ挙動]
 長押し後、5秒程度すると、貼り付けボタン(?)が消えちゃう
 1文字でも入力されていれば、入力項目タップで貼り付けカーソルが表示され、貼り付けカーソルをタップすると貼り付けボタンが表示される。
 1文字でも入力されていない場合、タップしても何も出ない。
 入力項目によって貼り付けのインターフェースが違う(?)←これ良くわからない。

悩みまくったんだけど、貼り付け関連で取得実行できる機能が超微妙。
で、苦肉の策で思いつきました。

ダブルタップでクリップボード表示ならいい?

軽く実装して使ってみたら、まぁまぁ許容範囲内。
長押しとダブルタップの違いをこんなに顕著に感じるとは思わなかった。
じゃ、これで!ということで、クリップボード表示の手数が1手増えちゃうけど、ダブルタップ表示設定を追加しました。

設定画面の「ダブルクリックで起動」のチェックをつけてください。

入力項目の上で、ダブルタップすればクリップボード(これは今までと変わっていないんだけど)が表示されます。
あとは、適当に選択して、入力項目長押し→貼り付けでいつも通りです。

うーん。
これが限界カモ。

アプリレベルで実装できる限界でございます。

でも、悔しいからもうちっと精進します。

2012年9月18日火曜日

携帯が暴走しました


気づいたら電源落ちてて、数十分で40%位電池減ってるの。
おいおい、なんだなんだと。

アプリのせいかなぁとか思って調べてたんだけど、全然おかしいところなくて、ついに壊れたかと思って落胆。
ハード回り全然わからないんだよね。くっそ。




と思ってたら、正しく充電できなくなって(USB抜いても充電中だったり、さしても何も反応しなかったり)、ステータスバーにある電池アイコンが点滅し始めた。


これは!!!!!
USBの端子逝ってんじゃん??
そのくらい無知の俺でもわかるぜベイベー。

そういえば、息子がヨダレマミレにしてたなぁと思い返してみる。

想像では、よだれによって端子が錆びてしまい、錆が変な接触をしているために、充電がうまくいかない。
そして、状況によっては放電(詳しくないのでわからないけど)してんじゃね?と。
※そんなもんで放電なんかしねーよとかいうツッコミは置いといてね。そっち系無知なので。


よしよし。そういうことなら。

ここに取り出しましたるは、精密ドライバと細かい目のサンドペーパー。

磨きました。

治りました。

めでたしめでたし。

基本的なことを忘れていたよ。
「まずは物理層を疑え」

2012年9月14日金曜日

[電池消費削減アプリ](訂正)通信遮断の省電力効果について


適用後のBatteryMix見てたら、WIFIのつながり具合が不定期っぽいから、なんだろうなぁと。
BatteryMixの監視間隔が10分おき&時刻更新のインテント取得してたのに、レシーバで処理書いてなかった orz.

BatteryMixの監視間隔が10分おき
WifiのON/OFF間隔がばらばらだなぁと思っていたんですが、10分おきだと、引っかかる時と引っかからない時が出ちゃいますね。
1分おきにして計測しなおしました。


時刻更新のインテント・・
※此れに関してはググればいっぱい出てくると思うので省略しますが、「アラームを利用している場合、時刻の自動同期が走ると現在のアラームが消えるので、再設定しなきゃだめよ」って事。
夜中ずーっとWifiがONになっているところとかは、アラームが消えたっぽい挙動ですね。
レシーバに処理入れました。

これらに気づいたのが遅かったので、12時間で計測。(今までのは24時間)

アプリ適用後



[あらためてまとめ]
大して変わらなかった。
気休め。

2012年9月12日水曜日

[電池消費削減アプリ]通信遮断の省電力効果について


--おさらい--
JuiceDefenderの動作に興味が出た。
3Gがメインみたいだから自分で作ることにした。
3Gは端末でOFF、アプリでWiFi定期OFFして通信を遮断。

あの後少し調整して、まぁ落ち着いたかなというところまで来たので、インプレッション!

さて、どんな効果があるかな。
   :
   :
   :
   :

ということで、BatteryMix。
以前


アプリ適用後




以前の方は、ほぼ使わないで計測&OS2.3だから微妙だけど、大目に見てください。
結論から言うと、横ばい時の消費電力は大して変わっていないかな。

計測し始めると、USBつなげない(充電されちゃう)からアプリ開発止まるんですよね。
まぁ、それはさておき、特に目立った改善は見当たらずって感じでした。

[まとめ]
メリット:
端末の省電力はほぼなかったが、WIMAXルータ側のスタンバイ時間を調整すればそっちの省電力になるかな?

デメリット:
省電力効果は大して見込めない
アラームで指定時間おきにWIFIをONにしたりしているから、常に裏で動いちゃう。
メールが最大で指定時間遅延する。
これが原因かわからないけど、謎の気づいたらシャットダウンしてた事件が発生した。


ということで、自分で省電力を考えてちゃんとやっていれば、あえてこれをやる必要はなさそうです。
僕は、WIMAXルータの省電力になるかもうちょっと導入しておこうかな。

2012年9月11日火曜日

Preferenceの論理破壊のコメントもらったので、どういう動きになるか試してみたよ。


[インストール直後]
---------------------
設定ファイルなし
---------------------

取得値
-autoboot:初期値(false)
-repeat:初期値(あああ)
-offset:初期値(かかか)


[値を設定]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<string name="repeat">あいうえお</string>
<boolean name="autoboot" value="true" />
</map>
---------------------

取得値
-autoboot:設定値(true)
-repeat:設定値(あいうえお)
-offset:設定値(かきくけこ)


[1つをあえて破壊]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<null name="repeat" />
<boolean name="autoboot" value="true" />
</map>
---------------------

取得値
-autoboot:設定値(true)
-repeat:初期値(あああ)
-offset:設定値(かきくけこ)


[復旧]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<string name="repeat">あいうえお</string>
<boolean name="autoboot" value="true" />
</map>
---------------------

取得値
-autoboot:設定値(true)
-repeat:設定値(あいうえお)
-offset:設定値(かきくけこ)


上記のように、破壊された設定値は読めなかった(まぁ当然ですね)が、ほかの値は正常に読めていました。
nullを設定した値に関しても、初期値で取得されます。

ということで、論理破壊が起こった場合は、その項目についてのみ設定がぶっとぶ(初期値に戻る)事がわかりました。
で、論理破壊が起こるとすると、コーディングミスがほとんどだと思います。
→コメントでももらいましたが、クリアされたインスタンス変数を設定しているなど。

これは、治せます。(というか、治します。)

論理破壊の判断基準としては、設定全消しではなくて、項目単位で消えるはずです。
もし、お手持ちのSwipeStarterで、だいたいこの項目とこの項目が消えるぜっ!ってのがあれば、ご連絡ください。
※すいませんが、プログラムを見直した感じだと、この落ち方をする個所はないように思えたので、場所の特定には至っていません。
 また、僕の端末でもこのような設定消去が起こったとこがないので、あたりも付けられず。。。。
 ごめんなさい。。

-備忘録-
putStringでnull設定しても、nullっていうノードができるのね。
イメージとしては<string name="xxx" />みたいになると思ってた。
ノード名=型名でした。
指摘もらってよかった。たくさん勉強になった。

2012年9月7日金曜日

自分用にいくつか作った


もろパクリだから公開予定はないんだけど、こんなアプリを作ってみた。

[強制マナーアプリ]
Androidのマナーモードは着信にしか反映されないから、マナーモードにしてても、youtubeとか見ると音が出ちゃう。
ずっとこれが嫌で、アプリ2個くらい入れて対応してたんだけど、ちゃんと動かなくなったのを機に自分で作ろうかなぁと思って。
ついでに、近藤さんのも取り込んで、間違えて音量ボタン押しても、強制的にマナーになるように。
※基本マナーモード運用なので、これは必須だった。

*機能*
マナーモードの定義を設定
 |マナーモードになったとき、どの音量をOFF(音量0)にするのか
 | ・着信音量
 | ・メディア音量
 | ・通知音量
 | ・アラーム音量
 | ・システム音量
 └バイブレーション あり/なし
強制マナーモードの設定
強制マナーをショートカットでトグル切り替え

自分の希望通りには動いている。
※例によって強制マナー以外をあまりテストしていないが。。


[電池消費削減アプリ]
巷でJuiceDefenderがやたらと流行っているようで(RSSにものすごい頻度で流れてくる)、入れてみようと思ったけど、主に3G?みたいな印象を受けた。
私はWimax運用につき、基本3Gは端末でOFFってるので、あまり意味がないかなぁと思った。
あと、あの過剰な権限付与に不信感しか覚えなかったので、導入は断念した。
でも、ディスプレイOFF時の通信を遮断するっていうのは、とても効果がありそうな気がしたので、ちゃっちゃと作ってみた。

*機能*
ディスプレイOFF時にWifiを切断し、指定時間のインターバルでWifi接続
定期ON間隔の設定
画面OFF後、定期WifiON後のWifi有効時間の設定


15分間隔でWifiをONして30秒間有効の設定でしか確認してないけど、端末スタンバイ(DeepSleep)になるし、Gmailも受信する。
(Spmodeは知らん。普段使ってないから。)

昨日作ったから、省電力に貢献しているかどうかはわからないけど、もうちょっと常用してみようと思う。
何度かメール受信はしてるけど通知をしない時があって、これは標準Gmailアプリの問題かなぁと放置している。

--雑談----------------------------------------
JuiceDefenderのコメントで「超改善しました!」みたいなのをよく見るけど、今までどんだけ裏通信アプリインストールしてんだよと思う。
と同時に、何も知らない人たちに、ここまでわかりやすい「改善結果」を見せる事の有効性を改めて考えさせられた。(考えただけで、見習おうとは思わないけど。。そもそも、僕のターゲットはちょっと詳しい人を狙ってるから。)
このあぷりがすごいんじゃなくて、お前らの使い方が・・・(なんでもありません)
コメント見る限り、そこそこ自分でいじくってる人とかには効果が薄いんだろうね。「逆に・・・」みたいなのも見かけるし。
通信切るわけだから、メールもリアルでは来なくなるしね。

でも、通信遮断の省電力効果を試してみたくなっちゃう。そう、開発者ならね。
--雑談----------------------------------------

あ、話題がずれましたけど、上記アプリ欲しかったらあげます。メールください。
欲しい人が多くなったら、どこかに野良アップします。

2012年9月5日水曜日

環境構築秋田


やっと本職の方の設定90%完了。
何年も同じ仕事していると、ローカルのリソースが増える増える。
なるべくサーバに置いてたつもりなのにな。

内職の設定今日の午後には終わるかな。

明日から、アプリ改修開始できるといいなぁ。


今日からやれって?
今日は、ベルギービールウィークエンド東京2012じゃないか!!

Buy me a beer