2016年04月11日

auスマートパスにて、Jota+の配信が開始しました。

このたび、ソースネクスト株式会社様との協業により、Jota+をKDDI株式会社のスマートフォンアプリ使い放題サービス「auスマートパス」にて配信することになりました。

高機能メモ帳 Jota+の詳細|アプリ - auスマートパス

スマートパス会員様は、Jota+有料版とほぼ同機能のアプリを追加料金無しでご利用になれます


Google Play版(無料版)との主な違いは以下の通りです。

広告無し(有料版と同じ)
タブの同時利用数制限無し(有料版と同じ)
エディタ背景画像の設定機能(有料版と同じ)
設定バックアップ/リストア(有料版と同じ)
定型文の最大保存数99個(有料版と同じ)
クリップボード履歴の最大保存数9個(有料版と同じ)
全てのIntentを受け付ける機能(有料版と同じ)
ファイルブラウザのブックマーク保存数20個(有料版と同じ)
外部ファイルシステムの利用なし
StorageAccessFramework対応なし

となります。

なお、auスマートパス版についての問い合わせ・バグ報告などは、開発者ではなくソースネクスト株式会社様のサポート窓口にて受け付けます。

posted by Jiro at 09:53 | Android

2015年09月22日

Jota+2015.08をApp Passにて配信を開始しました。

このたび、ソースネクスト株式会社様との協業により、Jota+をソフトバンク株式会社のスマートフォンアプリ使い放題サービス「App Pass」にて配信することになりました。

App Pass会員様は、Jota+有料版とほぼ同機能のアプリを追加料金無しでご利用になれます


Google Play版との主な違いは以下の通りです。

広告無し(有料版と同じ)
タブの同時利用数制限無し(有料版と同じ)
エディタ背景画像の設定機能(有料版と同じ)
設定バックアップ/リストア(有料版と同じ)
定型文の最大保存数99個(有料版と同じ)
クリップボード履歴の最大保存数9個(有料版と同じ)
全てのIntentを受け付ける機能(有料版と同じ)
ファイルブラウザのブックマーク保存数20個(有料版と同じ)
外部ファイルシステムの利用なし
StorageAccessFramework対応なし

となります。

なお、App Pass版についての問い合わせ・バグ報告などは、開発者ではなくソースネクスト株式会社様のサポート窓口にて受け付けます。

posted by Jiro at 15:47 | Android

2015年08月15日

「かんたん路線検索」公開しました

路線ドロイドというアプリがありまして、Yahoo!やGooの路線検索サービスのフロントエンドとして動いてくれるという、簡潔で便利なアプリだったのでありますが、メンテされなくなってずいぶん経っていたため、6月にYahoo!路線情報APIのURLが変更されたのに伴って役目が終了してしまいました。

しばらくの間代替になるアプリを探して色々と試して歩いたのですが、動作が軽い・タッチ回数が少ない・広告がない等の観点で見て満足できるものが見つからなかったので、結局自分で作ることにしました。

「かんたん路線検索」 GooglePlayのストアページ

 

device-2015-08-15-190758device-2015-08-15-190933device-2015-08-15-191038

ぶっちゃけていうと、路線ドロイドのYahoo!路線情報部分のクローンです。

Gooとか、時刻合わせとか、ジョルダンライブ連携とか、テーマとか、諸々の機能は作っていません。

代わりに、アイコン作成機能とか独自要素が入っています。

以下、ストアページより


かんたん路線検索は、出発駅・到着駅を設定するだけで、かんたんに路線検索が出来るアプリです。

以下の機能があります。
・駅名・住所・地名・施設名などで検索出来ます。
例)新宿→渋谷
東京ビッグサイト→幕張メッセ
港区芝公園4‐2‐8→墨田区押上1丁目1−2
など
・経由地を複数指定出来ます。
・よく使う駅名を登録出来ます。
・検索オプションを記憶します。
・検索に使用した条件式をショートカットアイコンとしてホームアプリに追加することが出来ます。
この機能を使うと、よく使う検索パターンをホームアプリから直接開くことが出来ます。

※本アプリは、Yahoo!路線情報(http://transit.yahoo.co.jp/)のサービスを利用しています。

※本アプリには広告、課金機能は入っていませんが、結果表示時のYahoo!路線情報の画面には広告が含まれております。これは、Yahoo!Japanによる広告表示であるため、本アプリでは消すことは出来ません。あらかじめご了承ください。

※本アプリのソースコードは、githubにてApache Licenseで公開しております。
https://github.com/jiro-aqua/KantanRosenKensaku

バグ修正・機能追加などのご要望はメールまたはTwitterにてご連絡ください。
pandora@aquamarine.sakura.ne.jp
@jiro_aqua


謝辞
路線ドロイドの作者のHideki Ohnuma様に。
有用なアプリを提供してくださってありがとうございました。

アイコン作ってくれた宮比のん様ありがとうございました。

(c) 2015, Aquamarine Networks. All rights reserved.


他人のネタ・他人のサービスで小銭を稼ぐつもりは端っからありませんので、広告や課金は一切ありません。(正直、こんなアプリでマネタイズする方がおかしい)

 

で、新規アプリなのをいいことに、初挑戦なものを含めて普段やらない事を色々と試しまくってみました。

・フルKotlin

・RxBindingでUIイベントを処理する

・KotlinのDelegate機能を使ってSharedPreferencesのラッパーを作る

・位置情報取得APIをObservable化してみる(これはお蔵入り)

・EspressoでUIテストを書く

・Espresso-intentsを使って、intentテストを書く

・Kotlin stdlibの活用

などなど。

 

色々と知見が得られたので、Qiitaに出力していきたいと思います。

posted by Jiro at 21:17 | Android

2014年09月30日

Jota+ 2014.12 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


【重要なお知らせ】

バージョン 2014.12 より、Jota+にモバイル広告とGoogle Analyticsを組み込みました。
これに伴い、以下の権限を要求するように変更致しました。
■ネットワークへのフルアクセス
■ネットワーク接続の表示

PRO-KEY利用の環境では、広告は非表示となります。
Google Analyticsについては、プライバシーポリシーを参照ください。

[2014/10/01 v.2014.12]
アイコン・UIデザインをリニューアル
タブレット向けに画面レイアウト変更
モバイル広告・Google Analyticsを組込み
中国語語リソースを更新 (Thanks to Eraserking!)
その他バグ修正


【IMPORTANT NOTICE】

From version 2014.12, we implemented Mobile Ads and Google Analytics.
We changed to require the permissions of the following.
- full network access
- view network connections

Ads will not be shown at PRO-KEY users.
Please read the privacy policy about Google Analytics.

[2014/10/01 v.2014.12]
Refreshed app icon and UI design.
Redesigned for Tablet devices.
Integrated mobile ads and Google Analytics.
Updated Chinese Resource. (Thanks to Eraserking!)
Fixed some bugs.


まあ、そういうわけで、海賊版騒ぎで心を折ってしまいやる気を無くしていたわけですが、放っておいてどうなるものでもなく、さりとて解決したわけでもないのですが、マネタイズに前向きに取り組むことでモチベーションを回復させることにしました。ある種の開き直りと申しましょうか。

てことで、今まで封印していた通信権限を入れて、広告を導入することにしました。こんな感じ。

device-2014-09-30-215516

device-2014-09-30-215636

やっていることは、普通の「無料+広告/有料」タイプのモデルです。広告の氾濫するこの時代に、今更広告を毛嫌いする人も少ないだろうと踏んでいます。

一応現時点での広告表示の仕様は以下の通りです。

・ファイル一覧画面 ファイルを開く時 (保存時は非表示)

・エディタ画面 ファイルをロード完了後3分間表示、縦横切り換え後3分間表示

余りうっとうしくならないように調整したつもりですが、気に入らない人はメールでお知らせください。

PROKEYユーザーには広告は出ません。念のため。


で、本当はこっちがメイン。

マテリアルデザイン風にアイコンとUIを変更しました!

icon_512px

アイコンはいつもの宮比のん様です。テーマカラーなどの相談にものっていただきました。本当にありがとうございました。

 

UIの方は従来のActionBarで実装しているので、あくまでも「マテリアルデザイン」です。Lだと逆に立体感がなくなってしまうという、なんちゃってマテリアルデザインの本領発揮です。


あと、Googleにお伺いを立てたところ、「タブレット対応してない」との回答を貰ったので、真面目にレイアウトを書いてタブレットの大画面を活かせるように対応を入れました。

 

てことで、UIの新しくなったJota+を今後もよろしくお願いします。

posted by Jiro at 22:45 | Android

2014年05月05日

Jota+ 2014.03 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2014/05/05 v.2014.03]
ファイル選択画面にディレクトリのブックマーク機能を追加
BOX(V1)Connectorの対応を削除
ファイルの更新チェックを行う設定を追加
(各種Connectorのアップデートが必要です)
隠しファイルの表示/非表示設定を追加
ファイル履歴の個別削除機能を追加
その他バグ修正

[2014/05/05 v.2014.03]
Added Directory-Bookmark on File Browser.
Removed Box(V1) Connector support.
Added the option to check for changes in the current file.
(Need to update Connectors.)
Added the option to show/hide hidden files.
Added function to delete one item in the file history.
Fixed some bugs.


【重要なお知らせ】
Jota+は古いOSのサポートを打ち切りました。
Android4.0.3より古い端末では、最新版の提供は行われなくなります。


【重要なお知らせ】
旧Box Connectorは削除されました。
Boxをご利用の方は、Box(V2-API) Connectorをご利用ください。


ファイル選択画面をナビゲーションドロワー風に改修しました。

こんな感じ。

device-2014-05-05-101313

ストレージ選択と設定メニューの内容が、ドロワー内に引っ越しています。

それに加えて、ディレクトリをブックマークに登録することが出来るようになりました。


ファイルのタイムスタンプをチェックして、更新されていた場合、リロードを促すメッセージを出すようにしました。

device-2014-05-05-101612

各Connector類のアップデートが必要なので、併せて更新してあります。

 


ファイル履歴をスワイプして、一件ごとの削除が出来るようになりました。

device-2014-05-05-102255

他にも横スワイプ→削除を組み込んであります。

posted by Jiro at 10:26 | Android

2014年02月11日

Jota+ 2014.01 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2014/01/11 2014.01]
起動時間を改善しました。
SMB Connector(Windows ファイル共有)の対応を追加しました。
いおたたん壁紙2、3を追加しました。(宮比のん様ありがとう!)
その他バグ修正

[2014/01/11 2014.01]
Improved start-up time.
Added SMB Connector(Windows File Sharing)
Added Free-Wallpapers. (Jota Girl 2 and 3) Thanks to Non Miyabi!
Fixed some bugs.


バージョンネームの付け方を変更しました。

次に、重要なお知らせです。


【重要なお知らせ】
Jota+は古いOSのサポートを打ち切る予定です。
次回以降のアップデートは、Android4.0.3以降のOS向けに提供されます。


手持ちのXperia ProにCM9(JB4.1)を焼いたので、GingerBreadの持ち駒がなくなってしまいました。ので、これを機に古いデバイス対応を取りやめることにします。

古いデバイス向けには、引き続き2014.01(今日のバージョン)が提供される予定です。


宮比のん様のご厚意により、いおたたん壁紙のその2その3を追加しました。

元画像はこちらから。

「宮比のん」のプロフィール [pixiv]

いおたたん - 「いおたたん」/「宮比のん」のイラスト [pixiv]

いおたたん - 「いおたたん」/「宮比のん」のイラスト [pixiv]

Jota+ - 「Jota+擬人化」/「宮比のん」のイラスト [pixiv]

ありがとうございました。


年末からの宿題がやっと片付いた感じなので、ぼちぼち大型アップデートを考えないと……。

posted by Jiro at 18:55 | Android

2013年12月28日

Jota+ 0.3.39 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/12/27 v.0.3.39]
強制終了バグを修正

[2013/12/27 v.0.3.39]
Fixed force crash bug.


GMailから添付ファイルを開くとクラッシュするバグを修正しました。

クリスマスセールはおかげさまで大好評でした。ありがとうございました。

また、各通貨とも¥600程度に価格改定しました。

posted by Jiro at 12:38 | Android

2013年12月27日

DexGuardを導入してみた

というわけで、ロシア人にクラックされて頭にきたので、DexGuardを導入しました。

DexGuard
http://www.saikoa.com/dexguard

DexGuardというのは、Android開発者にはお馴染みのProGuardの有償版で、Androidに特化した上で色々と機能が拡充されているものです。350EUR=五万円とそれなりのお値段がするのですが、解説記事が少ないので、導入記を書いてみたいと思います。


まず、購入

先ほどのページの一番下に価格表があります。

Clipboard03

私は日本人の個人開発者なので、「Private customer outside EU (tax-free), 1 developer license, 350 € 」を選んで、「Buy Now」を押します。決済はPayPalのみ。支払いが終わると、ダウンロードページへの案内とパスワードがメールで届きます。

ライセンスは、「一回支払えば永久に利用権有り、ただし、バージョンアップのダウンロードは購入から一年間のみ、それ以降は半額/年でバージョンアップのダウンロードが可能」というものです。現状でも完成度が低いわけではないので、妥当な線と思われます。
DexGuardは、Eclipse,Ant,Gradle,Maven,手動起動をサポートしています。なので、よほど特殊な環境でもなければ、普通のAndroid開発で導入に困ることはないと思います。

Eclipseの場合、jarファイル一個をdropinフォルダにコピーするだけで、インストールは終わりです。あとは、サンプルで入っているdexguard-project.txtという設定ファイルを各プロジェクトにコピーするだけ。んで、Eclipseを再起動します。(認識されない場合は、Eclipse -cleanで)

Clipboard02

DexGuarが有効になると、Androidツールのメニューに、「Export Optimized and Obfuscated Application Package...(DexGuard)」という項目が加わります。「署名アプリケーション…」の代わりにこちらを使うと、リリースビルドが出来るようになります。

DexGuardは、ProGuardと違い「Convert to Dalvik」「Obfuscate」「Packaging」「signing」を一括で行います。(ProGuardはObfuscateのフェーズのみ)


次に機能

本家saikoaの比較ページ。
http://www.saikoa.com/comparison_proguard_dexguard

Clipboard04

実質これだけしか解説がないというのは、正直考え物です。

 

ここでは、ProGuardにない機能を説明していきます。

String Excryption

Staticな文字列を難読化します。

こんなコードを
String s = "hogehoge";

String s = Encrypt.decode(new byte[]{x,x,x,x,x,x...})";
みたいな感じに変換します。

これによって、プログラム中の可読文字列を不可読なデータに変換します。

Class Encryption

変換後のコードを読んだわけではないのですが、dexコード自体を難読化するようです。
ライセンスチェック等のセンシティブな処理を暗号化すると良いとのこと。

Reflection

指定したクラス・メソッドの呼出を、リフレクションを使って処理するように変換します。
こうすると、ぱっと見ではどのAPIを呼び出しているか判別できなくなります。
もちろんリフレクションでは呼出クラス名を文字列で埋め込む必要があるので、String Encryptionとの合わせ技が必要です。

Assets Encryption

Resource XML obfuscation

assets/res配下のファイル名・内容を難読化してくれるようです。

Tamper Detection

改変検知用のライブラリが提供されていて、パッケージに改変があった場合の検出が出来るようになっています。

難読化の辞書

dexのシンボルにはUnicode文字が使えるので、各種言語で「・」のような単純なシンボルをかき集めた難読化辞書が付いてきます。
ただし、機械的に一括変換かけて読みやすい文字シンボルに再変換することも出来るので、これ自体が解析の難易度を上げるわけではありません。
nul,aux,con,lptなどのWindowsのファイルシステムで使えない単語も入っています。

パッケージのフラット化

AndroidManifest.xmlでexportされているパッケージだけは、パッケージ構造に従ったクラス名が付けられますが、それ以外のファイルは全て、o.hogeのようなフラットなパッケージ名に変更されます。また、exportされていないクラス名も難読化の対象になります。

スタックトレースの難読化

ProGuardでは、デバッグ情報を残すために、ファイル名と行番号の情報を出す様にしていました。これがあるとクラッシュレポートを読むのが非常に容易になるのですが、反面、攻撃者に対してヒントを与えることになる、というのが悩みどころでした。
(ファイル名と行番号を消すと今度はどこで落ちたか分からなくなる)

DexGuardでは、埋め込むファイル名が全て「SourceFile」という固定ファイル名になります。これによって、行番号を残しながらソースファイル名を秘匿することが出来るようになりました。

スタックトレースとビルド時に生成されるマップファイルを付属のretraceツールにかければシンボル名が復元できるので、デバッグにも支障は出ません。

ネイティブライブラリの難読化

ネイティブライブラリのシンボル名も難読化してくれるとのこと。

ログの無効化

Logcatの呼出を全て削ってくれます。ログ表示文字列と一緒に。

サンプル

AdMob,AmazonIAP,Google PlayのIAP,ライセンス、などの実践的なサンプルが付いてきます。

 

導入する時は

まず、ProGuard用のアプリ個別設定のインポートが必要です。
次は、マニュアル/サンプルを読みつつ設定項目を追加→ビルド→実機で動作確認→マップファイルの内容を確認→apktoolでリバースして内容を確認→最初に戻る、のループを回しつつ設定を追い込んでいきましょう。


使ってみてどうよ

とりあえず、apktoolがデコード時にクラッシュします。
これだけでも、値段分の価値はあると思います。
いくつか盛り込んで欲しいネタもあるので、開発側にフィードバックかける予定です。


お薦めできない人

あえて書いておきます。以下に当てはまる人は手を出すのはやめましょう。
・マネタイズできてない人
・不正コピーされてない人
・ProGuardが分からない人
・英語が読めない人

ワンクリックでプロテクトをかけてくれるような銀の弾丸ではありません。
また、DexGuardだけでは防げない攻撃も多々ありますので、攻撃者の手口を良く研究し対処していく必要があります。


最後に

海賊行為をする輩にこの言葉を届けます。
「くたばれ」

posted by Jiro at 21:23 | Android

2013年12月21日

Jota+ 0.3.37 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/12/21 v.0.3.37]
強制終了バグを修正

[2013/12/21 v.0.3.37]
Fixed force crash bug.


表書きとしてはいつも通りのメンテナンスです。

それと、ここ二三日で呟いた通り、DexGuard (DexGuard | Saikoa)が導入されています。

難読化については、ユーザー体験に影響が出ないように細心の注意を払っていますが、安定するまでは安心できません。


年の瀬も近いので、クリスマスセール始めました。

全世界で半額(2$)です。よろしくねー。

posted by Jiro at 19:23 | Android

2013年12月15日

Jota+ 0.3.36 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/12/15 v.0.3.36]
定型文の最大数を99に変更
Storage Access Frameworkに対応
(Android4.4のみ PROKEYユーザーのみ 実験段階)
'Emacs Org-mode'のキーワードを追加 (Thanks to Juan M. Gonzalez!)
バグ修正

[2013/12/15 v.0.3.36]
Changed the limit of Phrase feature 9 to 99.
Added Storage Access Framework support.
(Only Android4.4/PROKEY feature/experimanetal)
Added 'Emacs Org-mode' keyword. (Thanks to Juan M. Gonzalez!)
Fixed some bugs.


試験的な実装ですが、Android4.4で導入されたStorage Access Frameworkを使う機能を追加しました。

Android4.4をお使いで、PRO-KEYユーザーの方は、「設定ーファイル」に以下の項目が現れます。

device-2013-12-15-140514

ここにチェックを入れると、ファイルを開く画面・新規保存画面が、従来のものではなく、Storage Access Frameworkの画面を開きます。

device-2013-12-15-140550

今の所、SDカード、Google Drive、Box.net等が統一的に扱えます。

ただし、文字コードや改行コードを選ぶ項目がないなど一部機能的には減っているので、お気を付けください。

今後、Storage Access Frameworkに対応したクラウドがアプリが増えてくるはずです。

 

<重要>

・今後も含めて有料版限定機能となります。無料版への解放は致しません。

・現状試験段階なので、不具合があれば作者までご連絡ください。

・旧Android対応のために、現状のファイル選択ダイアログ・Connectorの提供は続けていきます。

・新規Connectorの開発は打ち切ります。


その他、バグ修正色々、いくつか不正コピー対策などを入れてあります。


年内のアップデートはこれで最後になります。(なるといいなあ)

年末にクリスマスセールを実施した後、有料版値上げの予定です。

 

それでは皆様、良いお年を。

posted by Jiro at 14:21 | Android

2013年11月24日

Jota+ 0.3.33 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/11/24 v.0.3.33]
Android 4.4(KitKat)に対応しました。
Box V2-API Connectorの対応を追加
ツールバー設定画面を再設計
バグ修正

[2013/11/17 v.0.3.31]
韓国語リソースの更新 (Thanks to Noah!)
バグ修正

[2013/11/24 v.0.3.33]
Support Android 4.4(KitKat).
Added Box V2-API Connector.
Refactored 'Toolbar Settings'.
Fixed some bugs.

[2013/11/17 v.0.3.31]
Updated Korean Resources. (Thanks to Noah!)
Fixed some bugs.


Jota+はこれまで内部APIをばしばし使っていたせいでAOSPの中でしかビルドできなかったのですが、KitKat対応を機にEclipseだけでビルドできる環境に移行しました。

環境移行の影響を見るために、先週ぐらいからDeployGateでβ版をリリースしていたのですが、大丈夫そうなのでGoogle Playで公開します。

βテスト参加の皆様ありがとうございました。


一番効果があったのは、xxhdpiリソースが使えるようになったことでしょうか。

icon_boyake

ぼやけていたアイコン(Nexus7(2013))が

icon_kukkiri

くっきりと表示されるようになりました。


もひとつ、ライブラリプロジェクトも普通に使えるようになったので、懸案だったツールバー設定画面も改良しました。

DSLV(https://github.com/bauerca/drag-sort-listview)で、ドラッグ&ドロップとスワイプでの削除が出来るようになりました。

device-2013-11-24-205033

device-2013-11-24-205127

他、ボタン類がごちゃごちゃしていたのをまとめました。


BoxのAPIがV2に移行するのに伴い、Box V2 Connectorも作成しまた。古い方は年内で削除する予定です。

posted by Jiro at 21:26 | Android

2013年10月14日

Jota+ 0.3.27 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/10/14 v.0.3.27]
無料壁紙「いおたたん」を追加しました。宮比のん様ありがとう!
バグ修正

[2013/10/14 v.0.3.27]
Added a free wallpaper 'Jota Girl'. Thanks to Non Miyabi!
Fixed some bugs.


Jota+のアイコンやカバーイラスト諸々を描いてくださっている宮比のんさんが、Jota+を擬人化したイラストを描いてくれました。

Jota+の初期構想の時点で萌えアイコン化というのは上がっていたのですが、そこは絵が描けない悲しさよ、棚の上でずっと忘れ去れていました。

こんな風に絵を贈ってもらえたのは初めてなので、すっごく喜んでます。のんさん、ありがとーっ!

というわけでプリイン壁紙として組み込みました。 設定→テーマ→無料壁紙、の所から選んでください。

こんな感じになります。

device-2013-10-14-113221

device-2013-10-14-113148

元絵はこちらから

http://www.pixiv.net/member_illust.php?mode=medium&illust_id=38974653 [Pixiv]

posted by Jiro at 11:51 | Android

2013年09月22日

Jota+ 0.3.26 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/09/22 v.0.3.26]
Cubby (www.cubby.com) のサービスに対応しました。
別途プラグインアプリ(Jota+ Cubby Connector)のインストールが必要です。
中国語リソースの更新 (Thanks to EraserKing!)
バグ修正

[2013/09/22 v.0.3.26]
Added support of Cubby (www.cubby.com) service.
Updated Chinese (Simplified) Resources. (Thanks to EraserKing!)
Fixed some bugs.


Cubby ( www.cubby.com )のアクセスプラグインを作りました。 Jota+ Cubby Connectorとあわせてどーぞ。

CubbyはLogMeInの運営するDropboxの同様のクラウドストレージです。

APIはWebDAVとなっていますが、Cubby Connectorは汎用のWebDAV Connectorではありません。汎用のWebDAV Connectorを作るはつもりはありません。この辺は、役立たずなゆるい規格しか作れなかったMicrosoftが悪い。


つーわけで、Nexus7(2013)LTEを買いました。

Jota+は普通に動いているので、特にアップデート等はありません。

Jota+のインストール数は新旧Nexus7のツートップ状態なので、今後はNexus7向けのなんやかやを入れていきたいなあ、とか考えてます。

posted by Jiro at 19:44 | Android

2013年09月04日

Jota+ 0.3.25 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/09/03 v.0.3.25]
Copy (www.copy.com) のサービスに対応しました。
別途プラグインアプリ(Jota+ Copy Connector)のインストールが必要です。

[2013/09/03 v.0.3.25]
Added support of Copy (www.copy.com) service.
Needs to install a plugin app (Jota+ Copy Connector).


Copy ( www.copy.com )のアクセスプラグインを作りました。 Jota+ Copy Connectorとあわせてどーぞ。

Copyは今年4月頃に始まった(らしい)Dropboxの同様のクラウドストレージです。

基本15GB、招待ボーナス5GB、250GB/年$99と、後発サービスらしく容量は奮発してます。

WindowsクライアントはDropboxと同様のフォルダー同期するタイプ。Android/iPhoneアプリもあり。機能的には一通り揃っているようで、細かいところはまだまだ充実してない印象です。

APIが公開されていたのでConnectorを作ってみたのですが、ドキュメントが簡素すぎるとか、ドキュメント通りにリクエスト投げるとエラー返すとか、フィードバックメールしたのに返事来ないとか、アプリのパブリッシュ申請したのに放置とか、色々なってないのが残念。

まあ、でも、長続きして欲しいものです。

 

招待ボーナス5GBが欲しい人はこちらからサインアップしてください。確認メールのリンク踏まないとボーナスもらえないのでご注意あれ。

https://copy.com?r=YVM7nB


んで、今回珍しくβテストをやってみました。

煮詰め切れてない部分が色々発覚して有意義なテストでした。ご協力頂いた皆様ありがとうございました。

で、Connectorのテストとは別に、Google Play Storeのβテスト機能とDeployGateを試してみたかった、てのがありました。

結論としては、DeployGateの圧勝。

DeployGate

アップロード→短縮URL踏む→クリックしていけばインストールできてる!

Google Play Store

β版としてアップロード→Google+のコミュニティに誘導→コミュニティの中でテスト参加のURLを踏む→ダウンロード

と、DeployGateの方がお手軽。

なおかつ、インストール状況が分かるとか、匿名のままで意見→返信出来るとか、何かと便利に出来ています。

一つ残念なのは、月500円で100端末までDLできるLiteプランの販売が終了してしまっていること。

当面はβテストはDeployGateのFreeプランで回していきたいと思います。

posted by Jiro at 00:15 | Android

2013年08月22日

Jota+ 0.3.22 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/08/22 v.0.3.22]
オンラインストレージへのアクセス機能を試用できるようになりました。
試用版では、ロードまたはセーブを一日に二回まで利用できます。

[2013/08/22 v.0.3.22]
Now, FREE(Trial) users can access to Online Storage.
In the trial version, you can access 2 load or save per 24 hours.


てな感じで、オンラインストレージへの試用アクセスが出来るようにしました。

posted by Jiro at 19:39 | Android

2013年08月17日

Jota+ 0.3.21 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/08/17 v.0.3.21]
強制終了バグを修正
スプラッシュスクリーンを追加

[2013/08/17 v.0.3.21]
Fixed force-crash bug.
Added splash screen.


今週盆休み取らなかったので、夏バテ。

posted by Jiro at 21:05 | Android

2013年08月04日

Jota+ 0.3.20 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/08/04 v.0.3.20]
カラーピッカーを再設計
ファイル選択画面のソート指定を保存するように修正
韓国語リソースを更新 (Thanks to Noah!)
性能改善
バグ修正

[2013/08/04 v.0.3.20]
Refactored Color Picker screen.
Changed to save sort kind on File Selector screen.
Updated Korean Resources. (Thanks to Noah!)
Improved performance.
Fixed some bugs.


てことで、カラーピッカーを作り直しました。

device-2013-08-04-194116

ついでに、文字色/選択部分の色/下線の色のセットを、テーマの黒/白ごとに保存するように変わっています。


また、先日ツイートしましたが、Android Application Award 2013 連動レビュー記事が掲載されました。

<個人・グループ賞>長文や複数文書の同時編集も可能な多言語対応テキストエディタ「Jota+」:ITpro

こちらもどうぞ踏んでいってください。

posted by Jiro at 19:49 | Android

2013年07月07日

Jota+ 0.3.17 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/07/07 v.0.3.17]
ファイル選択画面のソート機能を追加(名前順・容量順・日付順)
その他バグ修正

注意:クラウドストレージアクセス用の各Connectorアプリもアップデートが必要です。

[2013/07/07 v.0.3.17]
Added sort orders on File Selector Screen. (Name, size or date)
Fixed some bugs.

*Note: Needs to update Connector Apps for Cloud Storage.


内訳ですが、

・ファイル選択画面で、名前以外のソートに対応する
・複数行まとめてタブ追加する機能がバグってたんで修正
・クリップボード履歴を無効化する設定を追加

となっております。

各Connectorアプリもアップデートしましたので、併せてアップデートしてください。


さて、先日行われました日経BP社ITpro主催の Android Application Award 2013 において、Jota+が「個人・グループ賞」を受賞いたしました。

http://itpro.nikkeibp.co.jp/android/aaa2013/result.html (受賞作品)

http://itpro.nikkeibp.co.jp/article/NEWS/20130627/488092/ (表彰式の様子)

ユーザーの皆様、ご支援頂いた皆様、ありがとうございました。

 

併せて実施しました受賞記念セールも大変ご好評頂き、多くのユーザー様にご購入頂きました。

ありがとうございました。


このブログ始めてそろそろ6年近くが経ちます。この手の賞を貰うのは初めてなので、とても嬉しいのですが、何となく現実感がありません。ともあれ、賞金が振り込まれたら安いノートパソコンでも買おうかなと思ってます。

posted by Jiro at 22:31 | Android

2013年06月22日

Navigation Drawer使用時のアクションバーボタンの三本線について

画面左からニョっと出てくるメニュー画面。最近流行ってますよね、このデザインパターン。(何を今更w)

(Navigation Drawer | Android Developers から引用)

サイドメニューとか勝手に呼んでたんですが、Android的にはNavigation Drawerというのが正式名称のようです。

ActionBarとの組み合わせでお手軽にNavigationDrawerを実現するサポートライブラリも提供されています。

Creating a Navigation Drawer | Android Developers

これはこれで大変便利なのですが、Jota+ではアクションバー毎スライドさせたいので、サポートライブラリは使用せずにAdamrockerさんのSimpleSideDrawerに手を加えて使っています。(大感謝!)

Androidアプリにサイドメニューを簡単に追加できるライブラリ | throw life

 

で、今日の本題。

The New Navigation Drawer Design Pattern | ANDROID // UI PATTERNS

どうやら、Navigation Drawerを使う場合は上の絵のようにアクションバーのアイコンボタンを三本線にするのがガイドラインのようなのです。

実際サポートライブラリ(android.support.v4.app.ActionBarDrawerToggle)を使うとこんな感じになります。

ですが、ActionBarクラスのAPIにはここの絵を変えるというメソッドが存在しません。

サポートライブラリを使わない場合は、こんな風に「<」のままです。(ActionBarの標準動作です)

sidemenu_3

では、どうするか?

ソースを読むしかありません。で、見つけました。


class ActionBarDrawerToggleHoneycomb {
        SetIndicatorInfo(Activity activity) {
            try {
                setHomeAsUpIndicator = ActionBar.class.getDeclaredMethod("setHomeAsUpIndicator",
                        Drawable.class);
                setHomeActionContentDescription = ActionBar.class.getDeclaredMethod(
                        "setHomeActionContentDescription", Integer.TYPE);

                // If we got the method we won't need the stuff below.
                return;
            } catch (NoSuchMethodException e) {
                // Oh well. We'll use the other mechanism below instead.
            }

            final View home = activity.findViewById(android.R.id.home);
            if (home == null) {
                // Action bar doesn't have a known configuration, an OEM messed with things.
                return;
            }

            final ViewGroup parent = (ViewGroup) home.getParent();
            final int childCount = parent.getChildCount();
            if (childCount != 2) {
                // No idea which one will be the right one, an OEM messed with things.
                return;
            }

            final View first = parent.getChildAt(0);
            final View second = parent.getChildAt(1);
            final View up = first.getId() == android.R.id.home ? second : first;

            if (up instanceof ImageView) {
                // Jackpot! (Probably...)
                upIndicatorView = (ImageView) up;
            }
        }


大雑把にまとめると、setHomeAsUpIndicatorというメソッドがあれば、それを呼び出す。(JB-MR2=Android4.3?で追加されるAPIらしい)

なければ、{
android.R.id.home というidのViewがあるはず。
その親Viewを取得。
子Viewが二つあるはず。
そのうち、片方がandroid.R.id.homeのはずなので、もう一方を取得。
そいつがImageViewだったら「多分当たり!」

当たりを引いたら、setImageDrawable()する。てな感じになっています。「はず」じゃなかった場合「OEMが何か壊したんだ」などとコメントに愚痴が入ってるのが楽しいです。

 

で、これを、まんまパクって以下の様なメソッドを作りました。


private void setHomeAsUpIndicator(View view, int resId)
{
    int homeid;
    if ( JotaTextEditor.sHoneycomb ){
        homeid = android.R.id.home;
    }else{
        homeid = R.id.abs__home;
    }

    final View home = view.findViewById(homeid);
    if (home == null) {
        // Action bar doesn't have a known configuration, an OEM messed with things.
        return;
    }

    final ViewGroup parent = (ViewGroup) home.getParent();
    final int childCount = parent.getChildCount();
    if (childCount != 2) {
        // No idea which one will be the right one, an OEM messed with things.
        return;
    }

    final View first = parent.getChildAt(0);
    final View second = parent.getChildAt(1);
    final View up = first.getId() == homeid ? second : first;

    if (up instanceof ImageView) {
        // Jackpot! (Probably...)
        ImageView upView = (ImageView) up;
        upView.setImageResource(resId);
    }
}


で、これを、ActivityでActionBar関連の設定をした後あたりで呼び出します。

setHomeAsUpIndicator(getWindow().getDecorView(), R.drawable.ic_drawer);

「getWindow().getDecorView()」はwindowのroot viewを取得するためです。(contentViewにはActionBarが含まれていないことに注意)

また、ActionBarSherlockではここのアイコンのidはR.id.abs__homeになるので、OSバージョンを見て持ち替えてあげます。

後は、サポートライブラリのリソースから、ic_drawer.pngをコピーしてきます。

sidemenu_1

sidemenu_2

これでうまい具合にアイコン横に三本線が描けました。

posted by Jiro at 02:38 | Android

2013年06月09日

Jota+ 0.3.14 リリースしました

Google Play 公開ページ

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus

http://play.google.com/store/apps/details?id=jp.sblo.pandora.jota.plus.prokey


[2013/06/09 v.0.3.14]
バグ修正

[2013/06/09 v.0.3.14]
Fixed some bugs.


細かい修正ばかりでリリースノートを真面目に書くのが面倒くさいので、表向きは上記コメントだけでリリースします。

 

で、具体的な修正内容はこちら。


・カーソル上下移動時のカラム位置保存

以前に@Clover_Paint さんからリクエスト頂いた機能のうちの一つ。

2013年04月03日のつぶやき: アドエス小物日記 でのクロペさんとの会話を参照のこと。

・ブロックインデント機能

Tab/Shift+Tabで、選択範囲にtabを追加/削除します。

・Android3.0以降でメニューショートカットを復活させる

かつて、Honeycomb以降で、メニューのショートカットキーを割り付けておくとctrl+hogeで暴発する現象が出たので、削除しておいた機能です。

が、よりによってXperia Proのオーナー様から要望の声が上がったので、デフォルト無効にして復活させました。

たぶん、Xperia Proのオーナーじゃなかったら黙殺してたと思います。

・Evernoteで修飾付けた文字列を修飾毎コピペできてしまう問題を修正

コピペの時にCharSequenceのspanを削除するように修正しました。考えてみたら、クリップボードに入るのはCharSequenceだから、Spanとかも一緒に乗ってくるんだよね。

・描画レイヤーを最適化

無駄な描画をしているレイヤーでの無駄な処理をやめるようにしました。

などなど。


追記

[2013/06/09 v.0.3.15]

メニューショートカット周りでバグってたので、再修正しました。クロペさんありがとうございました。

posted by Jiro at 15:26 | Android