【Android Studio】エミュレータ内にファイルを転送する

Androidエミュレータ内でメディアファイルを扱いたいのにPCから転送する方法がわからない!ネットで探してみてもEclipseの記事ばかり出てくる!なんてことがありました。

様々な検索ワードを試して2時間。Android Studio使いがコマンドラインを使わずにエミュレータ、PC間でファイルのやり取りを行う方法が書かれた記事をようやく見つけたのでご紹介します。

Androidエミュレータ上のファイルをパソコンにコピーするにはSDKの「ddms」が便利 特集その3

リンク先の手順に従えば、簡単にファイル転送ができます。

当たり前ですが、ddms.batが格納されているフォルダは環境により異なりますので注意してください。
(私の場合は "C:\Users\ユーザ名\AppData\Local\Android\sdk\tools" にありました。)

なお、ファイルを送っても認識してくれない場合にはエミュレータを再起動してください。

 

【Android】Cloud Visionのサンプルを動かす

Google Cloud Visionのアンドロイド用サンプルプロジェクトを動かしてみたので手順を紹介します。

APIキーの取得

Cloud Vision APIの使い方まとめ (サンプルコード付き)

こちらのサイトを参考にAPIキーを作成します。

APIキーの種類一覧にAndroidキーがありますが気にせずブラウキーを作成してください。

最初Androidキーを発行して試したのですが、以下の様なリクエストが返されうまく実行できませんでした。

キーをブラウザキーに書き換えたらを問題なく動作。せっかくAndroidキーの取得方法をキャプチャ撮りながら記したのに全部無駄です(ぐちぐち

プロジェクトのインポート

次はAndroid Studioにサンプルプロジェクトをインポートします。

https://github.com/GoogleCloudPlatform/cloud-vision
グーグルのティムさんが作ってくれたサンプルです。リンク先で「Download ZIP」をクリックしありがたく頂戴しましょう。

ダウンロードが終わったらフォルダを解凍。フォルダ内にはアンドロイドだけでなくiOSやpython用のサンプルも有りますがそいつらは無視して

cloud-vision-master/android/CloudVision を

C:\Users\ユーザ名\AndroidStudioProjects

に移動。その後Android Studioを開き、スタート画面中の「Import Project」をクリック。

「CloudVision」を選択すればプロジェクトのインポート完了です。

最後に「MainActivity.java」
private static final String CLOUD_VISION_API_KEY = "YOUR_API_KEY";
のYOUR_API_KEYを取得したAPIキーに書き換えてください。

動かしてみる

準備が完了したので実際にアプリを動かしてみます。その際、実行環境のAPIレベルが22以上じゃないと動作しないので注意してください。

アプリ起動時の画面は以下のとおり。非常にシンプルです。

amarecco0052

ピンク色のボタンを押し、端末内の画像を選択すれば分類結果が表示されます。

amarecco0054

脅威の的中率。ちなみにkoratとはロシアンブルーにそっくりな猫の種類らしいです。

amarecco0053

沢山の猫の種類が候補に上がっています。この子は雑種なので当たりとも外れとも言えない。

amarecco0056

今度はロシアンブルーと雑種の組み合わせ。やはり雑種の場合は種類を絞り込めないようです。

どの画像でも猫が写っていることを判別できました。さすがGoogle。ただ品種の判別に関しては雑種に対して1.000の純血種のスコアがついてしまうのはどうなのかと思ったり。あとは分類候補に大別と小別が混在しているので何かに応用する際には結果の取捨選択が必要そう。

とはいれこれだけの精度で画像分類できるCloud Visionはやはりすごいです。インスタグラムの投稿をAPIで大量取得してCloud Visionにかければ流行を機械的に分析できたりしないかな。夢が広がりんぐ。

ひと月あたりの利用枚数が1000枚までなら料金は発生しませんので興味のある方は是非試してみてください。未来感ハンパねぇですよ。

つなぎなぎ

塵屑と粒子の端 つなぎ合わせて♪

ハイ、前回の記事投稿から5日が経ってしまいました。あれから進展はないのですが新参ブログは定期的に更新しないとSEO的によろしくないっぽいのでつなぎの記事を書きます。

Google Cloud Visionの存在を知ってからと使ってみたくてウズウズしています。ところがGoogle Platformを利用するにはクレジットカードの登録が必要になります。

AWSと違って一度登録したカード情報は削除ができないらしく、Vプリカの利用は好ましくありません。利用する側としても月額払いをプリペイドカードで行うと残高が足りなくなる恐れがあったり、買い足す際に手数料がかかったりと不便ですのでこれを機にクレジットカードを申し込みました。

クレジットカードの魔力とは恐ろしいもので、申し込み直後、気づいたら音楽のダンロード販売サイトやAmazonのKindleストアを巡回していました。人は支払手段を得ると購買意欲を刺激されてしまうんですね。

カードが手元に届いたら利用状況をモニタリングする手段を考えて自制する必要がありそうです。

【Android】HTTP通信がSPモードフィルタに引っかかる

以前紹介したOKHttpを用いたサーバとのHTTP通信ですが、普段使いの端末ではやたら長いHTMLタグの羅列がレスポンスとして返ってきます。

こんな感じ。

Screenshot_2016-02-25-02-45-33

文字列が長過ぎて見切れてしまっているのでAndroid Stutio上のログを確認。すると

「アクセス制限エラー http://www.xxxにアクセスできません」

の見慣れた文字が。

どうやら未成年Docomoユーザならお馴染みのSPモードフィルタによってサーバとの接続が制限されているようです。

フィルタリングサービスは携帯の契約時に加入させられ、その後成人しても解除せずにずるずると使い続けています。まさか自作で立てたサーバが制限対象になるとは思いませんでした。

他の開発者さんはどうやって対策をしているのでしょう。どこかに申請すればフィルタリング対象から外してもらえるとか?ググってもしっくりくる情報が得られません。

とにかく、アプリ開発時にHTTP通信を行う際にはフィルタリングに引っかからないように手を打つ必要があるようです。せっかくアプリをダウンロードしてもらっても使えないんじゃ意味無いですからね。

アプリ開発 打ち切りの危機

インターネッツ巡りをしていたらこんなニュースを見つけてしまいました。

Google、機械学習で向上していく画像認識Google Cloud Vision APIがβ版

内容はタイトル通り。googleから画像認識/分類APIである「Cloud Vision API」がβ版として公開され、利用者登録さえすれば誰でも使えるようになりました。

ここ数日でCloud Visionに関する日本語サイトがポンポン上がっておりエンジニアたちの関心の的になっているようです。

で、何故このブログで取り上げたかというとCloud Visionは現在開発中のアンドロイドアプリの上位互換になってしまうからです。

そもそも開発中のアプリでは、

①アンドロイド端末上で、写真撮影/ギャラリーから画像選択してサーバにアップロード

②サーバ側で画像分類ソフト「Caffe」を用いて画像を分類する

③結果をアンドロイド端末で表示する

を行おうと考えていました。

今日では様々な機械学習のライブラリや画像分類ツールがオープンソース化されています。しかしどれも専門的知識を要したり、導入が面倒だったり、動かせる環境が限られたりと何かしらの難点があるように思えます。

誰もがスマホで手軽に画像分類を試せるようになってほしい。沢山の人に機械学習の凄さを知ってほしい。あわよくば一儲けしたい。

そう思ってこの画像分類アプリの開発に着手しました。

ところが今述べたことは数日前に公開されたCloud Visionのサンプルプロジェクトで実現できてしまうんです。ダウンロードしたサンプルプロジェクトをAndroid Studioにインポートし、取得したAPIキーの名前をコード中に書き込むだけで画像分類可能。そのうちCloud Visionを用いたアプリがPlayストアに並ぶことでしょう。

このまま開発を進めてもGoogleのAPIに太刀打ち出来きるとは思えません。Cloud VisionはGoogleが提供する学習データを使うのに対しCaffeは自分でデータを用意する事ができるため、分野を限定してより精細な分類をすることができれば差別化出来るのでしょうが、果たして現実味があるかどうか。

とにかく今後の方針を考えなおさなければいけないですね。ここで開発を放り投げるのか突き進めるのか。それともCloud Visionを使ってまた別のことに挑戦するのか。

これは現実逃避してないで就活に専念しろってことですかね…。