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

しがないサラリーマンが不定期に更新する雑記帳。
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - | 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 |
【Amazon】AWS EC2 上で、node.js を使ってスピードオセロを作ってみた。


今回は、AWS EC2 上で、node.js を使ってみたお話です。

node.js を使うことで、サーバ側の処理も、javascriptを使って書けるとのこと、
お勉強のために、スピードオセロゲームを作ってみました。

題して「みんなでリバーシブル」。
スマホやPCなど、各自で持っているそれぞれのデバイスから、
共有のURLにブラウザ経由でアクセスし、
好き勝手に白や黒を置くことしかできませんができます。
相手の番の時に自分も置けてしまうるのでスピードが勝負です。
あと、3人以上の複数人でも楽しめてしまいます。

【ブラウザからのアクセスの様子】


【スマホからのアクセスの様子】


■ やったこと
1. AWSアカウント作成
アカウント作成後、12ヶ月無料で使える利用枠があるので、それを利用しました。
https://aws.amazon.com/jp/free/

2. EC2インスタンス作成
アカウント作成後、AWSホーム画面から、EC2 を選択し、
「インスタンス」メニューから、EC2インスタンスを作成します。
https://console.aws.amazon.com/console/home

3. TeraTermのインストール、設定を行い、接続、ファイルアップが出来るようにする
# 以下のページ(*1)を参考にさせていただきました。
-----------
ユーザー名 : ec2-user
接続先ホスト名 : ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com
秘密鍵 : ec2-2015xxxx-1.pem
-----------
みたいな感じ。xxのところは、作成したインスタンスの情報を入れる。
(*1)Amazon EC2編〜EC2インスタンスにTera Termで接続するには?〜
http://recipe.kc-cloud.jp/archives/27

4. TeraTerm経由で接続し、node.js をインストールする
# 以下のページ(*2)を参考にさせていただきました。
(*2)Amazon EC2でnode.js,Expressアプリケーションを立ち上げる
http://qiita.com/Sugima/items/670924901e38cf9eb84a

5. TeraTerm経由で「othelo」フォルダを作成し、その下に、socket.io をインストールする
[ec2-user@ip-xx-xx-xx-xx ~]$ mkdir othelo
[ec2-user@ip-xx-xx-xx-xx ~]$ cd othelo
[ec2-user@ip-xx-xx-xx-xx ~]$ npm install socket.io

6. TeraTerm の SSH SCP機能を使って、「othelo」フォルダにファイル(app.js, index.html)をアップロードします。
# 以下のページ(*3)を参考にさせていただきました。
(*3)TeraTermのSCP機能で送信・受信共に「To:」欄のデフォルト値が変更可能です
http://www.j-oosk.com/teraterm/file-transfer/1213/

7. TeraTerm経由で、app.jsを実行
[ec2-user@ip-xx-xx-xx-xx ~]$ node app.js

8. ブラウザ経由で、以下にアクセスする。
http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:3000/



app.js(サーバ側処理), index.html(クライアント側処理) のソースコードです。

■ app.js(サーバ側処理)


■ index.html(クライアント側処理)



PS. 今回初めて、ソースコード表示の見た目を変えてみました(便利!)。
# 以下のページ(*4)を参考にさせていただきました。
(*4)GitHubのGistを使う
http://raptor36.hateblo.jp/entry/2015/04/11/202438

| Amazon | 11:21 | comments(0) | trackbacks(0) | pookmark |
【YouTube】AutoUTube が また 動かなくなっていた。
AutoUTube が また動かなくなってしまっていたので修正しました。
(【Android版】【mixi版】【PC版】、いづれも)

==============================================
■ 現象
開始ボタンをおしても再生開始されず、
「www.youtube.com/devicesupport」が表示される

■ 原因
YouTube Data API v2 が廃止され、v3への移行に追従できていなかったため
・一部の古い YouTube アプリのサポート終了(2015 年 4 月)について

・YouTube Data API v3 に向けて


■ 対策
Data API v2 から v3 を使用するよう変更。

[ 変更前 ]
function search(keyword) {
:
var query = "http://gdata.youtube.com/feeds/api/videos?"
+ "vq=" + keyword
+ "&max-results=30"
+ "&format=5"
+ "&alt=json-in-script"
+ "&callback=view";
:
}

[ 変更後 ]
function search(keyword) {
:
var query = "https://www.googleapis.com/youtube/v3/search?key={APIキー}"
+ "&q=" + keyword
+ "&maxResults=30"
+ "&part=id,snippet"
+ "&callback=view";
:
}

function view(data) {
:
// VideoIDの取得
var videoid = data.items[rnd].id.videoId;
// Videoタイトルの取得
var title = data.items[rnd].snippet.title;
// サムネイルURLの取得
thumbnailimg.src = response.data.items[0].snippet.thumbnails.default.url;
:
}
==============================================


【Android版】AutoUTube for Chromecast



【Android版】AutoUTube for Android2



【mixi版】AutoUTube for mixi



【PC版】AutoUTube




トミーテック
¥ 2,850
(2013-06-08)
コメント:これで、自宅でもICOCA使いたい放題だぜー。

| YouTube | 21:53 | 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 |
デザイングッズストア。
CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 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