ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2015年1月16日金曜日

1/16 「2015年のAndroidアプリ開発入門」セミナーの走り書き

即興で書いてるので聞き逃し多し。勘弁されたし。

2015年のAndroidアプリ開発入門 1限目


JDK(Java開発環境)、Android Studioのインストール。インストール全体の流れはようてんさんの[Android Studio] Hello, Android Worldが詳しく説明しているのでお勧めです。


  • Minimum APIは「API 21」
    minimumを21に設定するとLollipop端末未満の端末では動作しなくなります。流石にそれは寂しいので慣れてきたらAPI 15あたりをお勧めしたい。
  • プロジェクト設定のCompany name
    テストなら適当な名前で大丈夫。アプリ公開する場合ではダメ。というかGoogle Playで弾かれます =)。お勧めなのは自分でドメインを取ってそれを使う事です。COMドメインなら年間1000円以内で運用できますよ。私はムームードメインという会社で登録しています。ドメイン登録で必要とされている住所は代理で登録できるのでお勧めですよ =)。
    私は「synchack.com」で運用しています。
  • エミュレータの設定
    AVDManagerボタンを押下→『Nexus S』→『Lollipop armeabi-v7a』→『Finish』を選択。高解像度の設定を選ぶと起動や実行に時間が掛かるのでテスト用にはNexus S程度の画面の大きさがお勧めです。

Android Studioの主要ボタン
Android Studioの主要ボタン

開発環境が遅い、というのは起動環境を変更する方法があるんですが、まああまりお勧めはしないですね。


2015年のAndroidアプリ開発入門 2限目


これ、初心者には相当厳しい内容になってるぞ、、、

  1. ボタンを押してTextViewを変更する
  2. GPSより位置情報を取得する
    どうだろう。今だとAndroid開発者サービス(Google Play services)から位置情報を取得した方が電池の消費が抑えられると思うんだ。GPSを搭載していない機器も結構ありますしね。GPSのパーミッションの付け忘れ注意。GPSを使用するにはユーザーの許可が必要になります。エミュレーターでは位置情報を設定できます。Android Device MonitorのEmulator設定に位置情報を設定します。
  3. Google Geocoding APIより緯度情報から住所を取得する
    外部ネットワーク接続を行うにもパーミッション設定が必要です。HTTPConnectダイレクトで取得しようとしているのでまあエラーになるよね。Thread化が必要なんだけど、それは次の時間で。
  4. Weather Hacksより住所から天気情報を取得する

後でSourceは公開されるとのこと。

  • Ctrl+Pで引数情報が見れる
  • Android端末の動作確認ってどうよ?
    全部を動作確認するのは不可能。癖のある端末を中心に確認したらどうだろうか。
  • Eclipse(ADT)とAndroid Studioの違いどうよ?
    Android Studioの正式サポートと切り替えにADTのサポートは打ち切る事になっているのでこれから始めるのならAndroid Studioお勧め。
    NDKと付き合う人はもう少しADTと付き合う必要があるのかな?
  • アプリの容量制限はある?
    ある。公式情報は手元にないが調べれば出てくるはず。大きくなればそれなりの手法があるのであまり気にしなくていいのではないか。

APIレベルの変更


  1. 『Android』→『Project』に変更
    左上の押せるかどうかよく分からないエリアです。クリッククリック!
  2. app下のbuild.gradleを選択
    下の方にもう一つbuild.gradleがあるんですがそれはスルーで。
  3. minSdkVersionを15に変更
    対象の端末のAPIに合わせるといいですよ。


2015年のAndroidアプリ開発入門 3限目


2限目の延長になってます。なので2限目の資料を見ておくんなまし。

Androidのお約束


ネット系のクラスはUI Thread(Main Thread)で使ってはならないという掟。Android 3.xあたりでエラーになり始めた。UI Threadで処理を止めると画面更新が出来ないのよ。ANR、ダメ絶対。Windowsとかも同じなんだけど、まあアレは緩いOSなんで =)。

掟についてはエラーログにちゃんと書かれているので、動かない時は必ずログは確認しよう。

逆にUI関連は、Main Thread以外で操作してはならない掟もある。

Handler(+Thread)、AsyncTaskを活用しよう。


お約束で知っておきたい作法




日本語で説明してる。中級者向け。オススメ。

Intent呼出にによる画面遷移


①画面の単位はActivity。追加したActivityは、 AndroidManifest.xmlに記述する ②ActivityはIntentで呼び出す。Intentにはパラメーターを 設定して、呼び出し先のActivityから取得できる ③Intentには、明示的Intentと暗黙的Intentがある 

このスプラッシュ画面の手法はAndroid 2.x系からあるテクニックだが、Activityを消耗してしまうので今はオススメ出来ないかな。外部からのIntent情報が劣化するはず。どうしても上手く渡せないタイミングが出来てしまう。

ナウなヤングはFragmentを活用するとメモリもストレスも少なく、ユーザーにも優しいのでお勧め。難易度はややムズなのでIntent呼びでも悪くないよ。

Intentは、Androidならではの強力な機能なので活用しよう。Google Maps等の連携も楽。Parcelableも一緒に活用しよう。便利だぞ。

ライブラリの活用


Gradle(build.gradle)に設定するとさっくり更新してくれる。便利。


---

と言う事で、Androidで確実にはまる、HandlerやらAsyncTaskやらをさらっと流すあたり、ナカナカこれを理解するのは難しいとは思います。しかもこれからはLoaderでしょ、とか言い出すときりがないw。例外もJavaと本格的に取っ組み合わないと厳しいですしねえ。

頑張れ、としか =)。

---

元の書籍を立ち読みしてきたら、今回やっていたプログラムがまんま掲載してました。

Android Studioではじめる 簡単Androidアプリ開発
有山 圭二
技術評論社
売り上げランキング: 4,098

2015年1月7日水曜日

【abc2014s】 開発に関するエトセトラ



Android開発関連のTips紹介です。


【abc2014s】 BLEくびかりぞく



【 講演内容 】
AndroidとiOSとBLEとiBeaconとO2Oとまさかりについてえいやでまとめて
URL: http://greety.sakura.ne.jp/redo/

ようてんさんのLT。BLEの触りだけ説明して時間切れというパターンでした。。

うーむ残念 =)。


2015年1月6日火曜日

【abc2014s】 失敗を避けて Google Play で成功していただくための高品質 Android アプリ開発 Tips


【 講演内容 】
進化を続ける Android プラットフォームで高品質なアプリを開発していただき、Google Play で成功していただくための注意事項や推奨事項について ご紹介いたします。

松内さんは、Google日本の中の人でAndroid開発者支援を担当している方です。今回はGoogle Playにアプリを公開するにあたっての注意点について解説しています。

#はよ資料公開してくれないかな、、、


2015年1月4日日曜日

【abc2014s】 今更ABC2014 Springの動画を集めてみる

(随時更新中)

Android Bazaar and Conference 2014 Spring

去年、ABC 2014 Winterに参加してて動画待ちなのですが、それ以前にABC2014sの動画を見てないなと思った探してみたら、何か放置されてる感があったので纏めてみました。

ABC2014wの動画が上がるまで、一日一動画くらい見ながら随時、コメントしていく予定。



2014年2月4日火曜日

DISQRO第2期計画

久しぶりにDISQROへのご要望が遠投されたんで対応しようかと思う。暇なんでね。


、、、まず、言い訳をさせて貰いたい。

  • 当時の回線が低速度だったorz
    DISQROを開発した経緯のひとつに、自分が使っていた回線が遅かった、という点があります。日本通信のb-mobile SIM U300という回線なんですが、まあ遅い。300kbpsが最大速度で、しかも大きなファイルをダウンロードしようとするとすぐに制限が掛かって途中で回線が切られてしまうことも多々ありました。
    なので、PDFをダウンロードするのはPCでして取り敢えずざっくり表示する仕組みとしてGoogle Docs Viewerを介して表示する事を思いつきました。
  • AndroidでPDFを表示する機能がそもそも無い
    これは今も同様ですが、Adobe標準のAdobe Readerがソコソコ良い出来になってきているので状況は良くなっています。自前でPDF Viewerを用意しようとすると結構手間だったりするので今後の課題でもあります。
  • 標準のDownload機能はAndroid 2.3以上
    Download機能と言うのは例外を考えると結構難しい処理でして。特にU300環境ですとDownload時間が長くなり、その間に他の処理をさせたり他のアプリを起動したりすることを考えるとああ面倒。DISQROでもその手の例外処理はいろいろ工夫はしています(が、今となってはベストではない手法ですが)。
    で、当時の状況からAndroid 1.6以上というのが私の防衛ラインでして、これは仕事場でも揉めたネタなんですが、まあ譲りませんでしたね =)。私にとって過去互換は必須でありユーザーを切り捨てるなんてあり得ない、という気持ちでいっぱいでした。今となっては流石に1.6は切り捨てたいですが。

随分前にレビューで以下のコメントを貰っていました。

見やすくて便利 この類のサービスは証券会社などのツールでもあるのですが、DISQROは表示がシンプルで見やすく使いやすい。 最近はスマホのSDカードに決算情報を保存し整理するようになりました。 必要なときに見られるのでメリットが大きく、もはや手放せない投資ツールの1つです。 ただ適時開示をダウンロードして保存するのにワンクッション必要なのと、リストの編集機能が無いことが残念! 投資先として必要な企業情報は常に変化しているので、リスト機能の拡充とダウンロード指定が直接できるように変更してもらえると嬉しい。 それが出来れば5つ星を上回る6星に評価したい。 

ごめんよう。当時、かなりテンパっててそれどころじゃなかったんだ。ワンクッション必要だったのは上記の通り。


今後の予定など


正直、まだこのツールに需要があるとは思ってなかったんでこのまま放置しようかと思ってました。でもまあまだ使ってくれてる人もいるようですし、何せ俺は今暇だw。Civ5をプレイする時間を削るだけで十分開発時間は取れます。

ということで以下の開発方針で手を入れていく予定にしています。

  • Android 2.3未満の切り捨て
    流石に1.6や2.2の互換まで考えて実装するのは難しくなりました。色々バットノウハウはあるんですが、結構手間がかかるんです。仕事なら未だしも、流石にこの手の苦労はしたくない思いでイッパイです。もしかしてAndroid 4.0未満まで切り捨てるかも知れません。
    Android 2.3未満のユーザーは本拠地からパッケージをダウンロードして使ってください。
  • ダウンロード機能の実装
    今回のメインですな。ダウンロードした後の処理、例えば削除とかも同時に考えておかないと不味い気はしています。実装の仕方は作りながら考えます =)。低回線とかの処理も考えないと、やっぱ駄目でしょうかねえ。
  • モダンな表示方法の切り替え
    最近のAndroidっぽい表示に切り替えます。具体的にはActionBarの実装あたり。この辺は何度も実装しているので困る事は無いと思うのですが、Theme周辺は相変わらずウンコなので色表示機能を切り捨てる可能性が高いです。
  • Evernote同期機能
    これは今、俺が欲しい機能 =)。EvernoteにはPDF全文検索機能があって結構便利なのです。ダウンロードしたPDFを再度Evernoteにアップロードするってのも何か回線の無駄遣いのような気がしてならないのですが。
  • Wi-Fi接続のみ機能
    低回線ユーザーのためのツールですので、この辺は色々考えていきたいとは思ってます。低回線でもWi-Fi接続ならPDFダウンロードに応じて欲しい、という要望もあろうかと。
  • 有価証券報告書表示機能
    パーツは揃ってる =)。他のサイトを使う事も考えたんだけど、投資に特化した情報で取得しにくいんだよね。なので自分でサーバーを立てようかと検討していたんだが、Civ5が(ry

取り敢えずダウンロード機能から順々に実装していく予定。モチベーション維持のためにもいち早くユーザーの皆様にβに付き合っていただきます =)。2週間に一度のペースで更新できたらと。他にも色々考えているものの、そもそもモチベーション維持やら俺の再就職が決まった時点で全てなかったことにしてしまう可能性もある訳で、どうなることやら =)


つか俺、DISQROのSource、どこに置いてたんだっけか、、、、

2013年12月29日日曜日

セリアの「MicroUSB変換コード」のコスパは最強


セリア(100均ショップ)で偶然見つけたUSBホストケーブルです。

この変換ケーブルを使う事で、タブレットやスマートフォンでUSBマウス等のUSB機器が接続できる、かもしれません。かも知れません、というのは、端末側でUSBホスト機能をサポートしている必要があるからです。最近の機種ではオマケ機能の扱いでUSBホスト機能を有効にしていますが、対応していない端末も未だにあります。

これはAndroid端末に限ったことではなく、Win 8系のタブレットでも同様のようです。ググってみた所、Miix 2 8でUSBホストケーブルを使った事例が紹介されていました。Miix 2 8が手元に届いたら確かめてみますね =)

---

で、このケーブル、実際に使えんのかよってことで実験してみました。近場に転がっていたUSBマウスを以下の端末にぶっ刺してみた所、刺した瞬間にマウスカーソルが表示されるのを確認しています。

  • Nexus 5 (Android 4.4)
  • Nexus 7 2013 (Android 4.4)
  • Nexus 10 (Android 4.4)

USBホスト機能は、Android 3.1でOSがサポートしています。ただしハードウェア側の対応も必要なのでどの端末でもマウスカーソルが表示される訳ではありません。


「えー、それじゃケーブル買っても使えないかもしれないジャーン」と思ったアナタ!


ケーブルを買う前に確認する方法があります。対象端末で以下のソフトウェアがインストールできるか、確かめてみてください。USBホストの対象機種でなければ「対象機種ではない」等のメッセージが表示されインストールできないはずです。




作ったの、私なんですけどね =)

少々中の説明をすると、このアプリは、USBホスト機能をサポートしている機種のみにインストールするよう設定しています。Google Playは、端末メーカーから提供されている情報からインストールさせるべきかどうかを判断しています。

なので、例えば中華タブレットあたりはそもそもGoogle Playに状態を登録していなかったり適当に設定していたりする訳で、そうなるとインストール出来ちゃいます =)。ハードウェアはサポートしていてもOS側でブロックしている場合もあって、その場合でもインストールできる場合もあります。このケースは稀です。

何にせよパーフェクトな訳ではないことは予め言っておきます。でもまあ、今は大丈夫だと思いますよええ。


別件ですが、USBホスト機能が有効であってもUSBメモリやSDカードリーダーは使えないかもしれません。Googleの方針からか、NexusシリーズはAndroid 4.xあたりでこの手のストレージ機能は無効になっています。Nexus以外の機種だと対応はマチマチです。

---

もう一つ確認方法を紹介。



上記のアプリをインストール後、『その他』→『USB』の『ホスト機能』を確認してください。『有効』であるなら使える可能性は高いです。


このアプリ、NTTドコモの最高傑作というかspメールがアレ過ぎて可哀想な状況ではあるのですが =)。13.12.25のアップデートでAndroid 4.3機種で情報収集中に固まるバグが修正されたようです。Android 4.4でも同様に固まっていたのですがどうやらこれも修正されたようです。Nexus 5で確認。

とんだクリスマスプレゼントですな =)。

---

一般的にUSBホストケーブルは500~600円するようです。

このケーブル、良し悪しの差が酷くて、悪いのになると接触不良でUSB機器を認識できなくなることが頻繁にありました。劣悪なケーブルの場合、USBコネクター側の加締めの部分(?)がユルユルになります。価格はあまり関係無いようですが、中華系の劣悪率は高いです。

で、このセリアのケーブルはというと、結構イイ。数十回くらい抜き差ししないと本当の実力は分からないので何とも言い難いのですが、最初の一発目から駄目なケーブルは駄目なのと比べると段違いに品質は良いと思ってます。駄目になったらまた買えばいいじゃない =)。100円(税抜き)だぞ。

いやホント、コスパ最強っすよこれ。



SANWA SUPPLY USBホスト変換アダプタケーブル(MicroBオス-Aメス) 10cm AD-USB18
サンワサプライ (2012-03-31)
売り上げランキング: 41


iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK
バッファロー (2011-11-01)
売り上げランキング: 53


---

(14.01.20:追記)

Lenovo Miix 2 8でこのケーブルが使えるかどうか確認しました。

問題なくMouseを認識し、動作しました。

今回は電源が足りないことは無かったようですが、モノによってはMouseへの電源供給不足というケースもあるので注意が必要かもしれません。Mouseはまだ小物ですがKeyboardだと更に厳しいかもしれません。 やはり積極的に活用するならUSB接続ではなくBluetooth接続の方が望ましいかと思われます。

どうしても使う必要があるのなら、電源供給付きのUSBハブを介して使用するのが宜しいかと。

2013年12月10日火曜日

【Android再履修】 DevAppsDirectでライブラリの動作確認をしてみた

DevAppsDirect


DevAppsDirectはUIのデモ集です。Google Play経由で入手できます。


DevAppsDirect
DevAppsDirect




ネットで公開されている数多くのライブラリを紹介していて、その場で動かせるのが特徴です。数は数えていませんが50個くらいは試したと思いますが、まだ全部は見きれていません。相当多いです。

アプリの特性上、相当数の権限を必要としています。流石に日頃使っている端末で動かすのは躊躇しまして、開発用のNexus 7(2012)で動作確認しています。Android 4.4ベースなのか、デモの内、2割位は起動できませんでした。デモ自体は随時更新されているので、ライブラリが対応しきれていないのかもしれませんね。実装ではまた違う苦労をしそうな予感がたっぷりです =)

デモにあったCard Library


これらのライブラリを活用する事でアプリの開発の手助けになること間違いなしです。是非色々試してみてください。例えば、最近知ったカード型UIを実装するためのライブラリ、Card Libraryは如何でしょう。このライブラリはGoogle Play経由でもDemoプログラムを入手する事は出来ますが、この手のライブラリが纏まっていて、すぐに簡単に試せるのは大きいと思います。

Card Library


UIライブラリを扱っている書籍の紹介


で、本屋を徘徊してたらこれらのライブラリを幅広く紹介している書籍を2冊見掛けました。このブログでチョイチョイ取り上げようかと思ってたんですが、その手間は殆ど必要無い位、フォローされています。

どちらの書籍も扱っている範囲はほぼ同じようでした。重なっている部分が多いのでどちらか1冊あれば事足りそうです。

Androidオープンソースライブラリ徹底活用


Androidオープンソースライブラリ徹底活用
八木 俊広
秀和システム
売り上げランキング: 9,078


サポートページ、サンプルプログラム有。


Androidライブラリ実践活用


Androidライブラリ実践活用[厳選111] (Software Design plus)
菊田 剛
技術評論社
売り上げランキング: 48,805


大判でサンプル画像が多くイメージが付きやすいです。サンプルプログラムはどこで公開されているんだろうか。

2013年12月3日火曜日

Unable to execute dex: java.nio.BufferOverflowException

他からプロジェクトを持ってきて実行する時点でこのエラーが発生するようです。

Make sure that the value of android:targetSdkVersion in AndroidManifest.xml matches target=android-<value> in project.properties.
-- Android Dex gives a BufferOverflowException - Stack Overflow

取り敢えずAndroidManifest.xmlのtargetとproject.propertiesのtargetを合わせる方法で何とかしのいでみた。

まあやっぱり同じネタで困ってる人達って多いんだなあと =)。


情報源



Android 4.4で実装されるはずの赤外線通信を追ってみた

いえね。赤外線USBドングルでも刺せば使えるようにならないかなーって思いまして。


まあ当然JNI経由でmoduleが呼び出されることは予想できるわけで。


こいつがJNIの入り口っぽい。

CONSUMERIR_HARDWARE_MODULE_IDがmodule名になるらしい。なんか嫌な予感しかしない。

Cross Reference: /hardware/libhardware/modules/consumerir/consumerir.c

こいつが本尊っぽい。

module名が「Demo IR HAL」という時点でこれpseuduじゃないですかやだー。


ということで赤外線モジュール部分は端末メーカーが独自に実装するもので、USBドングルで供給されることは期待されるべきではない、あたりが回答になるだろうか。

つーまーんーなーいーー

つかUSBドングルも殆どディスコンになっていて入手すら困難な訳だが。

【Android再履修】 Android 2.xでもActionBarを適用するLibrary、ActionBarActivity

AndroidのU/IデザインにActionBarというのがあります。

PlayストアのActionBar

このU/IをサポートしてくれるのはAndroid 3.0以降。今回はAndroid 2.3あたりまでをサポート範囲にする予定なのでActionBarをサポートするには何らかの工夫が必要なのね。以前はActionBarSherlockというLibraryを適用する事でAndroid 2.1からActionBarをサポートする事が出来て、結構活用していました。

で最近、Android本家でも過去互換でActionBarをサポートするLibrary(Support Library)を公開してくれたので、今後はこっちを多用しようかな、というのが今回の流れ。

Support7Demos


ActionBarのサンプルプログラムであるSupport7Demosをを動かしてみる。

  • extras/android/support/samples/Support7Demos

動作させようとしたんですがどうもうまく行かない。Support Libraryを適用するだけではダメで、v7の3つのLibraryも適用する必要があった。あら面倒。

  • extras/android/support/v7/appcompat
  • extras/android/support/v7/gridlayout
  • extras/android/support/v7/mediarouter

詳細については以下の記事を参照されたし。


情報源


2013年8月3日土曜日

Nexus 10、Nexus 7(2012)は未だにBLEをサポートしてくれていない模様

立て続けにAndroid 4.3への更新が入ったので早速更新しました。ぶっちゃけ何の変化もないんですが結構ご機嫌です =)

で、折角更新したので新規機能であるBluetooth Low Energy(Bluetooth LE、BLE)を弄って遊ぼうと思ったのですが、どうやらAndroid 4.3に更新してもBLE対応にはなっていない様子。Bluetooth Low Energy | Android Developersにあったサンプルを実行してみた所、Nexus 10、Nexus 7(2012)共にfalseで返却されました。

getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) 

念の為、PackageManager.FEATURE_BLUETOOTHも試してみたのですがこちらはtrue。Bluetoothには対応しています。当たり前ですね。

Wikipedia等で調べた感じですとBluetoothは「Broadcom BCM4330」というチップを用いていて、機能的にはBluetooth 4.0に対応しているっぽいです。


Bluetooth.orgで認証状況を確認してみたのですが、どちらもBluetooth 3.0止まり。少なくとも今回の更新で認証を取り直した形跡はありませんでした。ちなみにNexus 7 (2013)の方はBLE対応のようです。勿論、APIレベルで対応しているかは別の話ですが =)。


となると、そもそもアンテナレベルでBLEに対応しなければいけないのか、Bluetooth.orgの認証の取り直しが面倒なのか、どちらかと思うのですが多分後者でしょう。

認証を取り直してBLE対応になってくれると僕が嬉しいんですけど、何とかなりませんかね。

  • 価格.com - 『アップデートでbluetooth 4.0に対応?』 Google Nexus 7 Wi-Fiモデル 16GB のクチコミ掲示板
    現段階の更新ではBluetooth 3.0止まり。BLE対応はしていないようです。仮にBLE対応になったとしても、対応するソフトが今回のSDKに対応していなければ動作しないかと思われます。なので今の段階ですとBluetooth Smart対応デバイスへの対応は難しいでしょう。
    端末メーカーによってはAndroid 4.2の段階でBLE対応している場合もあります。こちらの方を検討してみてはいかがでしょうか。