2013年4月26日金曜日

[mozc for android]公開しているSVGをページにまとめた


↓コレ
http://toramamma.blogspot.jp/p/mozc-for-androidsvg.html

もしくは、右側の猫の上のところにページへのリンクが出てるはず。

一応、キートップは全部手を入れたつもり。
ポップアップとキー押下時は・・・いらないでしょ。
要るか。これは後で。


このSVGっての今回初めて触ったんだけど、こんなに癖のあるものなの?
SVGが癖あるっつうか、ビルド時の問題か。

色付けても反映されていなかったりとか、書いてあるのに表示されなかったりとか。
そもそも、自分がこういった類の言葉の意味すら分かっていないからダメなんだけどさ。
SVG自体は中身開いたらXMLだったので、何かをしていないとビルド時に解析できない形に保存されちゃったりするんだろうね。
何だろうね。よく分からん。

それでも、ちょっとコツをつかんできてようやく全キーボードのキートップだけは作り上げました。
コピペするだけなので、良かったら使ってみてください。

2013年4月24日水曜日

[透けテル]標準電話がダイアログに出てこないよーーーーの修正


僕はskype等の電話アプリを入れていないので気づかなかったんですが、タレこみにより発覚。
Android4.1あたりから、電話を掛ける際のどれで掛けるかのダイアログに標準の電話が出なくなっていた模様。

4.1端末がないので微妙ですが、タレこみ端末は4.1っぽかったので、多分4.1から。
前に使っていた4.0ではそんな問題はなかったので。

で、現象としてはこんな感じ。

電話系アプリは標準のみ
→標準電話で発信

標準電話とskype(なんでもいいけど)
→skypeで発信

標準電話とskype(なんでもいいけど)と050plus(なんでもいいけど)
→skypeと050plusのどっち使う?ダイアログが表示


チョット専門チックに書くと、「android.intent.action.CALL_PRIVILEGED」インテントに標準電話が反応しなくなっているっぽい。
透けテルでは、「android.intent.action.CALL_PRIVILEGED」が失敗したら「Intent.ACTION_CALL」投げてたので電話系アプリ入れていなければ標準で掛けられたようです。

で、何を対策したかというと、こんなアクティビティ作って

<activity
 android:name=".Call" >
 <intent-filter>
  <action android:name="android.intent.action.CALL_PRIVILEGED" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="tel" />
 </intent-filter>
</activity>


中身はこれだけ
public class Call extends Activity {

@Override
protected void onStart() {

super.onStart();

startActivity(new Intent(Intent.ACTION_CALL, getIntent().getData()));
finish();
}
}

要するに、標準CALLを中継する「CALL_PRIVILEGED」インテント受信アクティビティを作ったという事です。
そうすると、発信ボタンを押すと、「skype」と「透けテルアイコンの標準電話」っていう選択肢が出るので、どちらも選択可能と。

こんなんですー。

2013年4月23日火曜日

2013年4月19日金曜日

やべーー


勢い余って使ってみちゃったけど、これによると
http://support.google.com/googleplay/android-developer/answer/138230?hl=ja


「デベロッパーが返信すると、そのコメントを書いたユーザーに電子メールが送信され・・・」

おいおいおいおいおいおい

きいてねーよ!
メールいっちゃった方ごめんなさいね。

もうむやみにやらないようにしますので。

Google Playの個別返信機能が有効になってる!

やばい、みんなに話しかけに行っちゃおうかなw

2013年4月15日月曜日

[SwipeStarter]いろいろと


幾つかの報告・要望・質問が来たので回答とか

①WaitCancelHomeと一緒にして。2つインストールするのめんどくさい
個人的にですが、ランチャーはホームの機能を有するべきではないと思っていますので、めんどくさいかもしれないけど2個入れて。
意味があって分けているので。
別に僕のアプリのインストール数を稼ごうとかそういった意味ではないんです。

②フォルダからのアプリの起動をSwipepad(あ、某)みたいに離さず起動にして
前にも書いたことあるんですけど、僕の開発のスタンスとしては、「巷に出回っていない機能のアプリを作る」です。
人のアイデアパクって作るのって簡単じゃないですか。。。ってか簡単なんですよ。
じゃ、オーバーレイパクるなよっていうのは置いといて(パクリの境界線って結構難しいから)。
一応、一発起動に関しては当時は無かったはず。(あったら御免。だいぶ調べたのでないと思うけど。)

ドロワーとかフォルダとかに関しては、、必要最低限の機能しかないシンプルなものを実装してるつもり。
もはや影も形もないし、これらパクるなとかなったらあわわわわだけど。

で、ちょっと脱線してしまったけど、「このアプリみたいにして」っていうのは僕的にNGです。
パクってって言ってるようなもんですからね。

ちなみに、私は今でも(某)使っています。(余談ですが、あれ、最初使ったとき超感動的だった。)
もちろんSwipeStarterのフォルダも使っています。
使い分けしてる。

何が言いたいかというと、「先駆者にはそれなりの敬意を払いましょう」って事。

極端な話だけど、構想1年~みたいなものを作り上げて、これ良いじゃん!みたいに評価されて来たら、その機能(アイデア)を方々にパクられて終了とかね。
悲しすぎるでしょ。
とはいえ「パクリの境界線」っていう難しい問題があるので何とも。

消費者はこういったことをあまり考えていない(考える必要もない)と思いますが、この記事を読んでいただいているというのも何かの縁なので、ご再考いただければと思います。

③Simple版と無料版って何が違うの?
基本機能に関しては差異はありません。
広告解除 ¥100
マーカー解除 ¥100
ショートカット ¥100
合計 ¥300
が¥200で使えるってだけです。
そのかわり、フォルダ・ドロワ・タスク・ウィジェット等が利用できません。

動作に関しては、どっちが軽いとかもありません。
常駐時のメモリ使用容量も差異は無いと思います。
不要な翻訳ライブラリやプログラムを削っているので、apkの容量は2/3くらいになっています。
更新が少ないです(今はちょっと多いけど)。
あと、広告用の権限削ってます。

こう言ったらアレなんですけど、Simple版って僕的にはなくても良いものです。
むしろ管理が2重になってしまってめんどくさ・・・なんでもありません。
というのも、プログラムを作っている側なので、広告解除・マーカー・ショートカットを購入すれば、実質同一の動作をすることを知っているからです。
で、僕自身がマーカー4つしか使っていないし、ショートカットも使わない、フォルダとドロワ使ってるので広告は解除って感じで¥100で事足りてしまうんですよね。

でも、これは素人さんにはわかりにくいものかもしれませんね。

そもそもSimple版は要望があって作ったんですけど、結果作ってよかったなぁって思いました。
上にもある通り、僕は一緒だから必要な奴だけ課金して使ってよ派だったんですが、Simple版はまー問題が起きない。
そりゃ、基本機能だけだから初期に確立されているでしょ!ってのもあるんだけど、SwipeStarterの問題で多いのがアプリ内課金。
コレホント最悪。

作り方が悪いのか、いや自分の環境ではおかしくなったことないよなぁ。
でもスゲー来る。
アプリ入れ直したら復活出来なくなったから解除コードチョーダイメールが。

アプリ内課金って実はこっちではほとんど何も出来なくて、GooglePlay経由で情報を取得しているだけなんです。
だから、治そうと思っても実際おかしくなる端末使ってログとか取ってみないとわからない。
Playのキャッシュがおかしかったりもすることもあるみたいだし。

この失敗(教訓)を生かしてあれ以降アプリ内課金使っていません。

解除keyアプリみたいのに移行しようと思ったけど、無駄な(アイコンだけの)アプリが増えるからやめた。
実装してしまった手前、最後まで付き合う覚悟です。
購入情報が復活できなくなったらお気兼ねなくメールください。
購入番号書いてってあるけど、購入したPlayのアカウントのGmailからメールくれれば調べられるので、それでもいいですよ。無言メールじゃなければ。

果てしなく凄い脱線したけど、Simple版は無料版の「apkの容量が小さい」「アプリの更新が少ない」「広告用の権限が無い」アプリです。
それ以外の差異はありません。

④画面輝度が反映されない
何回か書いてるけど、オーバーレイ系のランチャーでステータスバーの上とかにマーカー置ける場合はAndroidとして輝度反映を拒否っているようです。
SwipeStarterの場合の対策です。
設定画面を起動してサービスを停止してください。

今、何らかの方法で自動的に判断出来ないか考えています。
でも別アプリになりそうだからどうしようか考え中。



こんな感じ。

2013年4月11日木曜日

[Mozc for android]SVG作ったから公開(一部)


とりあえず、自分が使うところだけってことでフリック入力のキートップ部分だけですけど。

好きに使ってください。
後々気が向いたら追加していきます。
https://www.dropbox.com/sh/db3ko7v9r1rfkj5/KTBleKd6NN?dl=1

作成したキートップの基本ルール

英語・記号:Verdana
日本語:MS Gothic

大きな文字:45px
小さな文字:24px

その他装飾なし。

基本的にはGoogle日本語入力を踏襲していますが、記号等に関してはフリック位置通りに配置しています。

で、公開にあたって、この前のバージョンからちょっと追加&綺麗にした版の反映apk
https://www.dropbox.com/s/937avbo83tkh4mc/MozcPlusOnOff3.apk

こういうのほんと苦手。
しかも、このアプリに組み込むときに、エディターで見てるのと実際に埋め込まれたのが違うんだよなぁ。

数字入力の左下と右下の記号がちゃんと並んでいない
記号マークの○がデカくなってる。

2013年4月9日火曜日

[GoogleIME+ON/OFF]キートップ画像フリックのところだけ入れた


Mozcのキートップ画像あり(フリックのキートップだけ)
https://www.dropbox.com/s/phqton23057a97p/MozcPlusOnOff2.apk


超めんどくさい。
僕作成のアプリのアイコンの様なヤッツケ感満載です。

2013年4月8日月曜日

[SwipeStarter]Simple版も4.0ビルドにした


要望のうちSimple版も共通の物を先に片付けました。
シンプル版はアプリとショートカットだけなので、基本的には動作系。

で、今回のSwipeStarter4.0対応ではこのあたりもやりやすいように考慮して作っていたので結構楽にアップデートできました。

シンプル版の対応も終わったので、ほかの要望を片付けようと思っていますが、またちょっと仕事が忙しくなりそうなので、バグ以外更新止まるかもです。
その場合は失礼。

今のところ今週いっぱいくらいは何とかこっちの作業が出来るかなぁっていう感じの予想。

マーカーの色が出ない奴とかなんだろうなぁ。。
僕が持っているので再現する端末無いんだけど、報告3件来たから結構メジャーバグな気がする。。。
全然おかしそうなところも見当たらないんだよねぇ。
また、色が無いだけで動くっていうのもちょっと不可解。

まぁ、愚痴はこの辺にして何とかやってみます。

[WaitCancelHome]centrally経由でメールをくれた方


標準ホームとして設定することで、ホームボタンの待ちをなくすのがこのアプリの目的ですので、ドロワーに本体アイコンを表示する必要はないと思っています。
そのため、今回のアップデートで削除しました。


って書いててなんで必要なんだろうなぁって考えてたら気づきました。

他にホームアプリ挟んでいるんですかね?
それならば失敬。
アプリとして使えないと意味が無いって事ですよね。

すぐに戻します。

2013年4月4日木曜日

[WaitcancelHome]ギギギ・・・


くっそう。
答え出ました。

アプリ起動履歴ボタンはその時最全面のActivity(画面)をベースに実行されています。多分。
WaitCancelHomeからは指定のホームアプリを履歴に追加しないようにしています。

ただ、この履歴が曲者です。
Androidなので、すべての端末でそうなのかはわからないけど、少なくとも僕の端末では「今最前面のアプリは履歴に追加しない設定でも履歴に表示される」という状況です。

たとえば、SwipeStarterはマーカーをよく使うという理由から履歴に表示しないように設定しています。
これをしておかないと、常に最前面に表示されちゃうから。
でも、たとえば設定画面表示したり、フォルダやウィジェットを表示している最中に履歴ボタンを押した場合、起動履歴にSwipeStarterが表示されると思います。
なので、「おそらく」アクティビティ終了(移動)時に今自分が動いていたという証拠を消し去ってから終了→ひひひってことをやっているんだと思います。

で、これが現在常時利用に設定されているホームアプリだけは別で、そもそも履歴に残らないようになっているんだと思います。
そりゃ、ホームだから常に出てきちゃうからね。

で、今回の件。
WaitCancelHomeはデフォルトホームに設定してホームボタン押下を検知する必要があります。
ホームアプリを作る気はないし、ほかの高機能なホームアプリには絶対負けるので、ほかのホームアプリを「中継」するという形をとっています。
この時、履歴に追加しない設定で指定されたホームアプリを起動するように修正したんだけど、これだけではどうにもできないことがありました。

ホームボタンを押して指定したホームを中継表示→デフォルトホームじゃないホームが最前面に表示されている→起動履歴に指定したホームが表示

そもそも、この標準履歴画面、自分(最前面)は表示しなくてもいいんじゃないかっていう気もするが、多分最前面を取得する仕組みがちょろいんだと思う。
だから、最前面を履歴から消せないんじゃないかなぁ。

Androidには履歴とタスクとプロセスってのがあって、これのどれか一つだけでは最前面は取得できません。
履歴:履歴に残さない設定が出来るので信憑性に欠ける
タスク:起動中のタスクを取得出来るけど、ちょっと余計なものまで含まれる(電話とか)
プロセス:単純にプロセスを取得するだけなので順番とかは関係ない。。かな?プロセス名は1アプリで複数設定可能だし。

すみません。
まだ僕もこの辺理解が足りないんだけど、要はちゃんと最前面が取れないって事。
SwipeStarterで指定アプリ実行中のマーカーOFFから(仮)が取れないのはこの辺の問題。

Android標準の機能なので、現状の解決策はありません。
履歴ボタン押下のインテントがあればそっちもWaitCancelHomeで中継しちゃえっ!と思ったんだけど、まだないみたいです。

開発者が実装しなくていい機能だから、開発者が実装できないようにしてるって感じかなぁ。
もっと有能な履歴アプリを起動できるようにしてあげた方がAndroid本体としても楽じゃない?なんて思うのは俺だけか。

危ないのかな。起動履歴を弄れるのって。
裏で起動しているけど起動していない事に出来る・・・・いや、そもそも履歴から除外できるし。
何だろう。

チョットグダグダしましたけど、現状出来ないって事で。

纏めると

■今回の対応で出来たこと
 指定したホーム以外のアプリ起動中の履歴から選択したホームを除去
 
■今回の対応で出来なかったこと(また、現状どうしようもないこと)
 指定されたホーム表示時にホームが履歴に表示される

メールでご報告いただいた方にはこのような感じの回答をして納得していただきました。
個人的には、ホームで全履歴消したら「起動履歴はありません」が出てほしいんですけどね。
がっくし。

精進しますか。

という報告です。
ご理解ください。

2013年4月3日水曜日

[WaitcancelHome]ありゃ、だめだ

履歴残らないように対応したつもりだったけど、なんかの拍子に復活しちゃうっぽいなぁ。

もう少し何とかしてみます。

[WaitCancelhome]Android標準の履歴にホームアプリが出ないように


メールで対応できますか?って来て初めて気づいたんですけど。
WaitCancelhomeが標準ホームを中継しているので履歴画面にホームアプリが出ちゃうっていう。

すいません。
こんなところ気づきませんでした。

履歴に登録されないようにホームを起動するように修正しましたのでご確認ください。

やっぱ、自分が普段使わないところはこういう要望もらった方がやりやすいです。
ドシドシお便りください!
待ってるぜ!

大変な奴は放置するけど!

2013年4月2日火曜日

[GoogleIME+ON/OFF]ほいっ


とりあえずできましたが、キートップ画像の入れ替えはとてもめんどくさいので、やめました。

なので、マーケットにはアップしません。
キートップ画像が無いのでのっぺらぼうですが、ここに置いておきますね。
https://www.dropbox.com/s/j4ax3f8ran6j729/MozcPlusOnOff.apk

チョット時間見つけてやるかもしれないし、やらないかもしれません。

Google日本語入力のオープンソース版Mozc(モズク)をちょっと弄ってビルドしただけです。
チョット弄った内容は、キーボードが表示されたときと消えた時にブロードキャストインテントを投げるようにしました。
分かりやすく言うと、今キーボード消えたよ~とかキーボード表示されたよ~とかって教えてくれる機能を埋め込みました。

ちょっと具体的に書くと
キーボード表示時:"open.android.intent.action.DISP_KEYBOARD"
キーボード非表示時:"open.android.intent.action.HIDE_KEYBOARD"

なんでこんなことをやっているのかというと、オーバーレイ系ランチャーの問題の中で鬱陶しいのが、文字入力中にアプリが起動しちゃう、いわゆる「誤爆」問題です。
「誤爆」が鬱陶しいので、せめてキーボード表示中だけでもマーカーが消えてほしいっていう要望(これは僕もだけど)からいろいろ工夫して作っていました。

僕の作った類似アプリで、キーボードON/OFFモニターってのがあるんですけど、これはアクセシビリティサービスっていうのを使って判断してます。
たとえば、今テキストボックスにフォーカスが当たっている=キーボードが出ている
テキストボックス以外にフォーカスが当たっている=キーボードが消えた

でも、これだと疑似的に判断しているだけなので、精度が悪いんです。
なので、チョコチョコ個別対応をしていました。

やっぱり、キーボードの状態はキーボードが発信するのが一番。
他のオープンソースのIME等にも実装していたんですが、IMEが変更されるストレスっていうのがものすごい有ってすぐに使うのやめちゃいいました。

で、でで、このたび、僕のメインIMEであるGoogle日本語入力がオープンソース化されたので、いろいろやってたってわけ。
キートップ画像が無いので、いろいろ試してたんだけど、数時間で出来る代物ではなさそうなので、ちょっとあきらめようかと思ってます。

ていうか、別にキーボードに文字書いてなくても普通に使えるし、僕的には何ら問題ないんですね。
なんと、この前のSwipeStarterのアップデートでマーカー毎のON/OFFが出来るようになったので、「キーボード表示時に下半分だけマーカーを消す」なんてことも可能!

素晴らしい。

良かったらのっぺらぼうだけど使ってみてください。
もしかしたら忘れたころにキーを貼り付けて公開するかもしれないけど。

SwipeStarter4.3から正式対応です。

[GoogleIME+ON/OFF]でけた


結果から行くと、SwipeStarter側の問題でした。
マーカー再構築の処理を共通化してて、それがアクティビティだったので、一瞬UI上で入れ替わっていたというオチ。

レシーバから直接サービス起動したら問題なくいけました。
アセアセ。


という事で、キーボードの画像リソースどこかから引っ張って来るか。

2013年4月1日月曜日

[SwipeStarter]マーカー無効(仮)について


マーカー無効でマーカー自体を消してっていう要望が多いので出来ない理由を。


仮実装のマーカー無効でマーカーを消せないの理由。
→もそも仮実装っていうのはAndroidでは現在起動中のアプリっていうのが取得できない。
 なので、独自に実装しているのでちゃんとした動きにならない可能性があるので(仮)にしています。

これは今これが起動したよインテント(そもそも無いけど)を取得しているわけではなく、マーカーをタッチした時に、今の最上位を調べて・・・ってやってるんで、マーカーを消す訳にはいかないって事。
マーカーを触る前にマーカーを消すのは不可能でしょ?

[GoogleIME+ON/OFF]くぅッ。ちょっと厳しいか。。


キーボードON/OFFモニタの時と同じ現象なんだけど、入力補間系とか、デフォルトでキーボードを隠す設定になっている場合うまく動かない。
たとえばLINEで入力出来ないとか、GooglePlayで補間されないとかいうパターン。

SwipeStarterでは、キーボードON/OFFのインテント(ONになったよーとかOFFになったよーとか)を受け取ると、サービスを再起動します。
ここで言ってるサービスっていうのは、SwipeStarterの基本サービスでマーカーを表示しているやつ。
今のところ、マーカーをOFFにしようとした場合、マーカーのサービスを再起動してマーカーを消しています。
 →再起動しないで消せないか調査中。

で、これのネックは、いったんSwipeStarterに処理が移ってしまうっていうところ。
たとえば、TwitterアプリでON/OFFつかった場合

Twitter起動
 ↓
投稿画面
 ↓
キーボード表示
 ↓
ON/OFFインテント発行
 ↓
SwipeStarterが受信
 ↓
Twitterが保留扱い
 ↓
SwipeStarterがマーカー除去処理
 ↓
SwipeStarterがマーカー除去終了
 ↓
Twitterに戻ってくる(保留だったのでもう一回再構築)

普通の入力ボックスとかなら問題ないんですが、再構築されるとよろしくない動作をするものがあります。
初回表示でキーボードを自動で隠すアプリ:再構築後にまた自動で隠しちゃう→キーボードが永遠に出てこない
入力途中で補間する入力ボックス:履歴が一瞬出て再構築で消えちゃう

キーボードON/OFFモニタではこれを除外することで対応してたんだけど、除外ってなんか悔しい。
なので、もう少しなにか対策を練ってからにすることにします。

このインテントを標準で発行していない理由がなんとなくわかった気がする。