Android

Androidでpush通知を送れるように実装してみた

新着情報などがあった場合に送られてくるpush通知。今回無料でpush通知が送れるFirebaseというものがあるが
Firebaseを使いpush通知が送れるようにAndroidを実装してみた

参考にしたサイト

〇Firebaseの登録

上記サイトに従いやってください!!簡単に無料でできます

〇Android側の実装(共通)

①appのbuild.gradleに1行追加

これだけでAndroidアプリがバックグラウンドにある場合は送れるようになります!!

〇Android側の実装(固有の端末に送りたい場合)

①MyFirebaseInstanceIdServiceクラスの実装(名前は任意)

②appのbuild.gradleに追加
compile ‘com.google.firebase:firebase-messaging:11.0.4’
compile ‘com.firebase:firebase-jobdispatcher:0.7.0’

③AndroidManifest.xmlにMyFirebaseInstanceIdServiceを追加

④起動Activityで①のonTokenRefresh()を呼び出す

⑤ログに固有のTOKENが表示されるためFirebaseのNotificationを送る画面から単一端末を選択し「FCM 登録トークン」を入力する場所にTOKENを入力し送信

〇Android側の実装(フォアグラウンドで送信したい場合)

①MyFirebaseMessagingServiceクラスを実装(名前は任意)

②MyJobServiceクラスを実装

③上記2クラスをAndroidManifest.xmlに追加
するとFirebase送信時にMyFirebaseMessagingServiceクラスのonMessageReceivedメソッドが呼ばれるようになる!!
ちなみにバックグラウンド時はFirebaseが自動作成してしまうためメッセージのカスタマイズがむずかしい。
別の方法を考える必要性があるかも

〇今回のまとめ

なかなか30分で実装とまではいかないが思ったよりも簡単に実装できます!!Androidアプリにおいてpush通知は付き物?のような気もするので今後実装予定の人がいれば参考にしていただければ!!

猫ちゃん判定アプリ作成への道(第2回:猫ちゃん判定アプリ完成へ)

第2回:猫猫ちゃん判定アプリ作成へ
〇開発環境
・windows10
・python3.6
・PyCharm Community Edition 2017.1.5
・Android Studio
・xampp

〇第1回から
猫の顔を認識するための分類機作成にチャレンジしたが失敗。。。
仕方がなく既存の猫の顔用の分類機(openCVに初期で準備されている)を利用することにした
次回以降、自作分類機作成にチャレンジしてみたいし、作成できれば学習させることができる(まさにAI!)
画像を受け取り、猫の顔を認識できれば「cat」、認識できなければ「not cat」と返すようにしてみた

以下ソース

〇せっかくなのでAndroidと連携
7月からandroidアプリの作成をやっていたので
①Androidで画像を選択
②pythonへ画像データを送信
③結果をJSONで返す
④Androidに結果を表示
の流れでやってみようと試みる。がどうやってPythonに画像データを送ればよいのか。。。
requestBodyに画像データを入れて送ってみた

python側でRequestBodyから読み込み画像ファイルに書き込んでその画像で判別すれば行けるのではとやってみるも以下のソースではだめだった。。。

ファイルへの書き込みは成功しているが画像として開けない。。。そもそもだが受け取るデータがこれだとstr型で受け取られる。それをbyteとして書き込んでいる。
受け取るときにbufferとして受け取り書き込んでみる

画像として開けるようになった。これでAndroidとPythonの連携ができるようになった!!

〇今回のアプリの精度
既存の分類機を使っている且新たに学習していかないので猫画像でも猫じゃないとでた画像は今のままではずっと猫じゃない画像として認識される。
今後余裕があれば学習できるように改善していきたい。
今の時点の精度は
①正面を向き、口を大きく開いていない猫画像は猫と判定
②犬やサル、トラ、チータ、猫っぽい人などは猫じゃないと判定
参考

③トラ模様のヤマネコなど一部特殊な猫に関しては猫じゃないと判断されることも。。。
参考

④片方の目しか映っていない、顔がつぶれているなどの状態だと猫じゃないと判断される。
参考

〇今後
今回は既存の分類機を使って終わりなので分類機を作成および学習させていくことに挑戦していきたい。どんどん学習し、どんどん精度が上がっていく。
そのようなアプリ作成を次は挑戦してみたい!!(今回もそんなアプリを目指したが時間の関係上次回こそ!!)