カントリーモーニング(仮)

しがないサラリーマンが不定期に更新する雑記帳。
【AutoUTubeforChromecast】Firebase Hostingサービスへの移行
ロイヤルガストロ
¥ 1,080
コメント:どら焼きが好きな人や、ねこが嫌いな人にオススメです。

Google DriveでWeb Hosting機能が使えなくなり、
AutoUTubeforChromecast
が動作していなくなっていました。


【Android版】AutoUTube for Chromecast



AutoUTubeforChromecast
は、
Google Castのカスタムレシーバ
を使用しています。

カスタムレシーバアプリは、httpsサーバでの配信が必要のため、今までは、Google DriveでWeb Hosting機能で実現していました。

今回、Google DriveのWeb Hosting機能が使えなくなり、代わりに httpsサーバでのHosting機能が使えるFirebaseへ移行しました
(Editey等Google Drive上で動作するアプリで公開自体は出来そうでしたが、
httpでは公開されるものの、httpsでの公開ではないため、調べた範囲ではだめそうでした)。


■ 使い方
1. node.jsをインストールする
https://nodejs.org/ja/
2. コマンドプロンプトを起動し、以下のコマンドを打つ
> npm install -g firebase-tools
> firebase login
> firebase init
3. デフォルト設定では、コマンドプロンプトを起動したパスに
publicフォルダが生成されるので、ローカルPC上で、
publicフォルダ以下に、公開したい.htmlファイル等を用意する。
4. 以下のコマンドを打ち、公開する(Hosting URL: https://〜 で公開される)
> firebase deploy



【Android版】AutoUTube for Chromecast
| Android | 16:35 | comments(0) | trackbacks(0) | pookmark |
【Android】プライバシーポリシー追加(みまもりベーコンくん)。
Google様より以下のようなメールが届いたので、対応することに。

---------------------
お客様のアプリ みまもりベーコンくん(パッケージ名 noriaf.norinoriafter.jp.monitoringbacon)が、Google Play の個人情報や機密情報に関するユーザー データ ポリシーに違反していることが確認されました。

警告の詳細: Google Play では、ユーザーや端末に関する機密情報を要求する、または取り扱うアプリの場合、デベロッパーは有効なプライバシー ポリシーを提供する必要があります。当該のアプリは、個人情報または機密情報に関わる権限 (カメラ、マイク、アカウント、連絡先、スマートフォンなど) またはユーザー データを要求していますが、有効なプライバシー ポリシーが確認できませんでした。

必要な対応: [ストアの掲載情報] ページとアプリ内に有効なプライバシー ポリシーへのリンクを記載してください。詳しくは、こちらのヘルプセンター記事をご参照ください。
---------------------


みまもりベーコンくんではBeacon機器を検知してGMailを送信します。
その際、GET_ACCOUNTS の permissionを使用しています。
今回の指摘は、どうやらそれに起因しているようです。

プライバシーポリシーの記載をWebページとアプリに必要とのこと、
以下の「アンドロイドスマートフォンプライバシーガイドライン(*)」を参考にさせていただきつつ、追加しました。
(*)http://www.taosoftware.co.jp/android/android_privacy_policy/android_smartphone_privacy_guideline.pdf




Webページに追加し、アプリのヘルプからwebview経由でダイアログ表示。





みまもりベーコンくん




| Android | 11:34 | comments(0) | trackbacks(0) | pookmark |
【Android】みまもりベーコンくん。
手頃なBeacon端末を見つけたので、
子供のみまもり用に作成しました「みまもりベーコンくん」。
あらかじめ設定しておいた宛先に、iBeacon機器を検出した時にメールを送ることができます。


みまもりベーコンくん


【使い方】
1. 「メール設定」で宛先を設定します。
2. iBeacon機器を検出したら、設定した宛先にメールが送られます。

【使用想定シーン(例)】
1. iBeacon機器を用意します(amazonで購入など)。
2. 使わなくなったスマホなど、家に常にあるスマホやタブレットなどに「みまもりベーコンくん」をインストールし、起動しておきます。
3. 普段、家に一人で帰宅する鍵っ子のお子様のかばんにiBeacon機器を入れておきます。
4. 家に帰宅したタイミングでメールが届くので、ちゃんと帰宅したかどうかが確認できて安心です。

【見つけた手頃なBeacon端末】
BVMCN1101AA。
http://www.products.braveridge.com/beacon/bvmcn1101aa-b/


今回、ハマった点をいくつか。。。

■ iBeacon検出について
altbeaconというライブラリを使用。
以下の各種参考サイトに沿って使用すれば特に困ることはなかったが、
その他のポイントとしては、
・startMonitoringBeaconsInRegion()で
検索対象のBeacon機器のuuidをnullで指定すると、すべての機器が検索できる
・その場合、見つけたBeacon機器のuuidは、
didEnterRegion/didExitRegionでは特定できないっぽいので、
startRangingBeaconsInRegion()を使った。

【参考にさせていただいたサイト】
http://dev.classmethod.jp/smartphone/android-beacon-library-introduction-1/
http://qiita.com/a_nishimura/items/2974fd0956c9e00b6bec
https://www.gaprot.jp/pickup/tips/altbeacon
http://grandbig.github.io/blog/2015/05/16/altbeacon/
など

■ GMailでメール送信
iBeacon機器を検出時に、設定した宛先にメール送信するためGMailを使用。
GMailを使用するためには認証処理が必要。
1. ベーシック認証
2. OAuth認証
の2つの方法があるが、1.は、ユーザが明示的に、
Google設定から「安全性の低いアプリ設定」をOFFにしないと使えないため、
今回は、2. の方法を選択。

以下の参考サイトに沿ってjavamail-androidを使用して作成するも、はまった点は以下。

認証時、以下のエラーログ。
---------
javax.mail.MessagingException: 334 eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ==
---------
Base64 decodeすると、
{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}
って出て、以下が原因の様子。

// GMail認証開始
//mHelper = new OAuthHelper(this, "oauth2:" + "https://www.googleapis.com/auth/gmail.send", this);
mHelper = new OAuthHelper(this, "oauth2:" + "https://mail.google.com/", this);

スコープが https://www.googleapis.com/auth/gmail.send ではだめで、
https://mail.google.com/ を使うとエラーは出なくなった。


【参考にさせていただいたサイト】
http://ja.stackoverflow.com/questions/16296/javamail-android%E3%81%A7gmail%E3%81%AEoauth%E3%81%AE%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E8%AA%8D%E8%A8%BC%E3%82%92%E8%A1%8C%E3%81%86%E6%96%B9%E6%B3%95%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84
http://kawaidesu.hatenablog.com/entry/2015/01/04/071658
http://diary.syarihu.net/2015/05/androidandroidoauthoauthhelper.html
http://qiita.com/daisy1754/items/788cf32d9379746bba14
など


■ GooglePlayへのアップロード時に非承認
上記をクリアしてやっと動作するようになり、喜び勇んでアップロードしたら、
Google様から露骨なので非承認というメールをいただく。
---------------
Google Play にアプリを送信していただきありがとうございます。審査の結果、Monitoring Bacon(パッケージ ID noriaf.norinoriafter.jp.monitoringbacon)は、露骨な性表現を含むコンテンツに関するポリシーに違反しているため、不承認となりました。送信したのがアップデートの場合は、アプリの以前のバージョンが引き続き Google Play に掲載されます。
---------------


「露骨な性表現を含むコンテンツ」は含んでいないので異議申し立てを行ったところ、
Google様からやっぱり露骨なので非承認というメールをいただく。
---------------
Google Play チームにお問い合わせいただき、ありがとうございます。
詳しく審査した結果、お客様のアプリは、露骨な性表現を含むコンテンツに関するポリシーに違反しているため、元に戻すことができません。
ポリシーの記載事項:
- ポルノなど、露骨な性的コンテンツを含む、または助長するアプリは認められません。一般に、性的満足を意図したコンテンツは認められません。
たとえば、お客様のアプリには次に示す違反が含まれています。
- ウェブサイトで露骨な性的コンテンツが含まれている広告を発見いたしました。
---------------



ん?ウェブサイト?

アプリではなく、ウェブサイト?


ウェブサイト???










これかー!









ハァハァしてたからだめだったのかー!



デベロッパーコンソールの「連絡先情報」-「ウェブサイト」の記載欄から、
このHP「カントリーモーニング(仮) http://norinoriafter.jugem.jp/」を削除したところ、
めでたく承認、公開されました。めでたしめでたし。



みまもりベーコンくん






オムニバス,白雪みるく,河原木志穂,くーたん,森永まみ,たぬまゆみ
Ciffon
コメント:ハァハァすると承認してもらえません。

| Android | 23:53 | comments(0) | trackbacks(0) | pookmark |
【Android】Google Mobile Ads SDK更新。
Google様より以下のようなメールが届いたので、「AutoUTube for Chromecast」の Google Mobile Ads SDKを更新することに。

AdMob では常に時代の先端をいく効果的な収益化ソリューションをお届けできるよう努めております。そうした進化を遂げるには最新のテクノロジーの活用が不可欠であり、この取り組みの一環として、Android 向け Google Mobile Ads SDK の 6.4.1 以前のバージョンは、2016 年 9 月 15 日をもってサポートを終了させていただきます。
2016 年 9 月 15 日以降も引き続き広告を配信していただくには、Google Mobile Ads SDK を 7.0.0 以降のバージョンにアップグレードしてください。


元々、eclipseで作っていたので、まずは、Android Studio に
「Import project(Eclipse ADT, Gradle, etc.)」からインポート。

その後、build.gradle の記載を

----------------
//compile 'com.google.android.gms:play-services:4.2.+'
//↓
compile 'com.google.android.gms:play-services:9.2.0'
----------------

に変更してビルドすると、エラー発生。

--------------
Error:Execution failed for task ':dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:¥Program Files¥Java¥jdk1.7.0_79¥bin¥java.exe'' finished with non-zero exit value 2
--------------


各種参考ページを見ていると、「play-services:9.2.0」を使うと、
どうやら、1つのアプリで使えるメソッド最大数の65536個をはみ出す様子。

1つのアプリで使えるメソッド最大数を増やすため、

-------------------
compile 'com.android.support:multidex:1.0.0'
defaultConfig multiDexEnabled true
-------------------

を指定すると、ビルドエラーは取れるけど、
Android KitKat以前では、結局 65536個以上は使えないままのようなので、解決にならず。。。

結局、以下のように、使いたいGoogle PlayサービスAPIのみ使うようにして、
なおかつ、メソッド数が大きくない少し前のバージョンを使うように、
かつ、Google Mobile Ads SDK が 7.0.0 以上になるように変更して、
動作するようになりました。めでたしめでたし。

------------------
//compile 'com.google.android.gms:play-services:4.2.+'
//↓
compile 'com.google.android.gms:play-services-cast:7.0.0'
compile 'com.google.android.gms:play-services-ads:7.0.0'
------------------


【参考にさせていただいたサイト】
http://qiita.com/niusounds/items/f9a0ab3cbe07878ed8f6
http://stackoverflow.com/questions/30410140/android-studio-java-exe-is-finished-with-non-zero-exit-value-2



AutoUTube for Chromecast








| Android | 23:03 | comments(0) | trackbacks(0) | pookmark |
【YouTube】IFrame Player API を使うか。
AutoUTube for Android2 が動かないまま放置していたのをとうとう修正しました。
(【Android版】)



【Android版】AutoUTube for Android2


==============================================
■ 現象
開始ボタンをおしても再生開始されず、アプリが終了する。

■ 原因
Android上でのFlash再生が限られた方法でしかできなくなったため。

■ 対策
Flashを用いず、IFrame Player API
使用するよう変更しました。

[ 変更前 ]


[ 変更後 ]

==============================================

あと、アイコン変えたり、ヘルプの文言変えたり 細かい変更しました。




【Android/Chromecast版】AutoUTube for Chromecast



【mixi版】AutoUTube for mixi



【PC版】AutoUTube



| Android | 23:15 | comments(0) | trackbacks(0) | pookmark |
【Android】毎回同じメールしか送らんのんよ。
¥ 1,300
コメント:「なぜならそうよ わらわが美しいから!」……………。そう、ハンコックのセリフをハンモックで寝転んで読みたいあなたにオススメ、くつろぎドキドキハンモック♪





さて、



毎回同じメールしか送らんのんよ



会社から家に帰る前に、「これから帰る」メールを打つのが毎回面倒くさいくさいので、
自分用に作りました。

あらかじめ保存しておいた、宛先/本文 の内容を、ウィジェットボタンが押された際に以下で送信しているだけです。

------------------------
smsManager.sendTextMessage(destinationAddress, null, text, sentIntent, null);
------------------------

普段、「設定」→「モバイルネットワーク設定」→「データ通信を有効にする」のチェックを外して使っているので、
SMSで送信できるようにしたかったのでした。











| Android | 23:52 | comments(0) | trackbacks(0) | pookmark |
【Android】AutoUTube for Chromecast。
Google
¥ 3,900
コメント:クロノトリガーは名古屋ではクロノトリギャーというらしいので、クロムキャストは名古屋ではきっとクロムギャストというのだろうたぶん。



AutoUTube for Chromecast



Chromecast をゲットしたので、YouTubeコンテンツ自動連続再生プレイヤ、AutoUTubeの Chromecast版を作りました。


やったことのまとめです。



・Chromecastについて

Chromecastデバイス側で動作する、Recieverアプリと、
クライアントデバイス側(今回の場合は、androidスマホ)で動作する、Senderアプリがあります。

Recieverアプリ には、3種類あります。
-------------------
1. Default Media Receiver(デフォルトのReciever上で再生させる、実装は不要)
2. Styled Media Receiver(プリビルドされた Media Receiverを使って UIのみ変更する)
3. Custom Receiver(HTML5とJavascriptとCSSを使って開発者が実装)
-------------------

また、Receiverアプリでは、クライアントから接続要求を受けると、
その要求されたIDに応じて、サーバからReceiverアプリソフトをロードし、処理を開始します。

今回、AutoUTube for Chromecast は、
「3. Custom Receiver」のタイプで作成しました。

「3. Custom Receiver」の作成には、Registrationが必要で、
その際、Google Cast SDK Develope から、5ドル支払う必要があります。

Registration すると、そのRecieverアプリ固有のIDが発行されます。

また、Recieverアプリは、HTML5とJavascriptとCSSで作成し、
任意のhttpsサーバに格納し、そのURLを上記のGoogle Cast SDK Develope ページに登録します。

すると、クライアントのSenderアプリから、アプリ固有のIDで接続要求された際に、
IDに紐付いたURLから、Receiverアプリソフトがロードされ動作することになります。



・AutoUTube機能について

今回、AutoUTube機能を実装するに当たっての、Senderアプリ/Receiverアプリ の分担は以下です。

・Senderアプリ(クライアントandroidスマホ側)
ユーザからの検索キーワードの入力を受け付け、start/skip/stop の要求をReceiverアプリ側に送信する。
Chromecastとの接続方法、メッセージの送信方法については、Google Castのサンプルコード(CastHelloText-android)を参考に。

・Recieverアプリ(Chromecastデバイス側)
Senderアプリから送信された要求に基づき、
検索処理(YouTube Data APIを使用)と
再生処理(iframe 組み込みの YouTube Player APIを使用)を行う。
ホストするhttpsサーバには、Googleドライブを使用。



・署名付加時困ったことについて(おまけ)

今回、Chromecastの機能は、Android2.3以降でしか動作しないとのこと、
久しぶりに SDKを入れ替えたところ、デバッグ動作時には、全く問題なかったのに、いざ、GooglePlayへリリースするため、署名を付加しようとしたところ、


-----------------------
"auth_client_using_bad_version_title"
is translated here but not found in default locale
-----------------------

みたいな、MissingTranslationエラーが発生。。

google-play-services の libで出ている様子で、
valuesフォルダにデフォルトの翻訳文字値が詰められていなくておこられている様子。


“auth_client_using_bad_version_title” is translated here but not found in default locale
のページを参考に、values-en-rIN 内の auth_strings.xmlを valuesフォルダにコピーして、解決。
google-play-services、なんでエラー出るのだ。。。



AutoUTube for Chromecast









| Android | 17:38 | comments(0) | trackbacks(0) | pookmark |
【Android】Applivに掲載されました(ティヒロフラッシュ)。
「ティヒロフラッシュ」が、Applivに掲載されました。




Androidアプリ発見サイト −Appliv






紀文
¥ 1,229
コメント:豆乳コーラだよ。コーラガムを噛みながらアンバサを飲んでるような感じの味がするよ。

| Android | 22:20 | comments(0) | trackbacks(0) | pookmark |
【Android】Applivに掲載されました(JustPushThisCameraButton)。
「JustPushThisCameraButton」が、Applivに掲載されました。




Androidアプリ発見サイト −Appliv



回天堂
¥ 7,504
(2014-05-20)
コメント:べっ、べつに、自転車が好きなだけなんだからねっ!

| Android | 22:05 | comments(0) | trackbacks(0) | pookmark |
【Android】Applivに掲載されました(EndlessVoiceTweeter)。
「EndlessVoiceTweeter」が、Applivに掲載されました。





Androidアプリ発見サイト −Appliv


¥ 7,980
コメント:これからの梅雨の季節にぴったりのアイテムなのか。

| Android | 21:58 | comments(0) | trackbacks(0) | pookmark |
デザイングッズストア。
CALENDAR
S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
SPONSORED LINKS
AMAZON RECOMMEND
ハァハァCD
ハァハァCD (JUGEMレビュー »)
オムニバス,白雪みるく,河原木志穂,くーたん,森永まみ,たぬまゆみ
SELECTED ENTRIES
CATEGORIES
ARCHIVES
RECENT COMMENT
デザイングッズストア。
心頭MakeUp Tシャツ。
2009_09_18_11_39_28
ブロカン
サンプル・モニターの口コミ広告ならブロカン
おしゃれショップ「かさぶた人生」
MOBILE
qrcode
LINKS
PROFILE