カテゴリーアーカイブ Android

村上 著者:村上

【Android】Facebookログインで使うアプリのリリースキーハッシュを取得する方法

こういう設定周りは凄く苦手で、特にFacebookはとことん手こずるので、備忘録としてまとめ。

今開発中のアプリで、Facebookログインを導入しているのですが、こちらの機能の動作確認中に、「Invalid key hash.」というエラーが発生したので、その対処法について。
そもそもこちらのエラーは、「Facebook for Developers」のアプリ設定ページで、エラーメッセージに表示されているキーハッシュが登録されていないために発生するので、キーハッシュを発行して登録すれば解消できます。
…が、これが結構面倒くさい。
コマンドは Facebook の公式ページに掲載されているのですが、肝心な自分の

 

キーハッシュ発行方法は以下の手順で行います。
なお、作業はWindowsのコマンドプロンプト上で行いました。

まず、発行のためのコマンドはこちら。

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

が、そもそも keytoolコマンドが動かないので、下記のcd コマンドでカレントディレクトリを変更します。

cd C:\Program File\Java\jre1.8.0_151\bin

各自の環境によってパスは変更して頂く必要がありますが、私の環境では下記の場所に移動したところ、無事 keytoolコマンドが動作しました。

そして、さっきの keytoolコマンドに戻るのですが…このコマンドの RELEASE_KEY_ALIASRELEASE_KEY_PATH がわからない!
上記のコマンドが掲載されていたFacobookのページにも、その他検索にヒットしたサイトにも、どこから自分の RELEASE_KEY_ALIAS と RELEASE_KEY_PATH を調べるのかは明記されておらず…結構調べました。

で、結論として、まず RELEASE_KEY_ALIASAndroid Studio で確認できました。
Android Studio のメニューバーにある Build > Generate Signed APK… をクリックします。
すると、下記のようなウィンドウが表示されるかと思います。

このウィンドウの中央辺りに「Key alias:」という欄がありますが、これが RELEASE_KEY_ALIAS です。
また、この時設定したパスワードも、キーハッシュ発行時に使うので覚えておきましょう。

次に、RELEASE_KEY_PATH ですが、こちらは、アプリのリリース用APKを生成するときに使用する ○○○.jks ファイルのパスを指定するとのこと。

この3点が分かったので、改めて keytool コマンドを実行します。
実行すると、「キーストアのパスワードを入力してください:」というメッセージが表示されるので、Android Studio で設定したパスワードを入力します。
すると、最後が「=」で終わる、28文字のキーハッシュが表示されるので、こちらをFacebook for Developer のマイアプリページで設定・保存すれば作業は完了です!

それでもうまくいかない場合は、一度Facebookのアプリ設定の「Facebookでログイン」から、該当のアプリを削除してみると、ログインに成功しました。

 

以上、Facebookログイン時に使用するリリースキーハッシュの取得方法でした。
こういう設定周りが苦手な方は、是非参考にしてみてください。

  • この記事いいね! (0)
村上 著者:村上

【Cordova】Android Stodio 3.0で「Unable to resolve dependency for ‘:@debug/compileClasspath’: Could not resolve project :CordovaLib.」というエラーが出たときの対処法

今回はCordova(コルドバ)というハイブリッドアプリ開発の時に発生したエラーの対処法について。
「ハイブリッドアプリ」については、下記のサイトが分かりやすくて、参考になりました。

ハイブリッドアプリとは? – Qiita
https://qiita.com/soarflat/items/cf5d343c75baadb461dc

 

他のアプリ確認する際に、Android Studioのバージョンを 2から3に上げなければいけなかったのですが、アップデートしたら、Cordovaのアプリがビルドで失敗するようになってしまいました…。
で、対処法がないか調べてみたとこと、案外あっさり見つかって拍子抜けしました。

対処法は、Android StudioでCordovaのアプリを開き、build.gradle ファイルを開きます。
で、下記2行の記述があると思うので、こちらを削除もしくはコメントアウトします。

// 削除するコード
debugCompile(project(path: "CordovaLib", configuration: "debug"))
releaseCompile(project(path: "CordovaLib", configuration: "release"))

で、代わりに下の一行を追加するだけ。

// 追加するコード
compile project(':CordovaLib')

build.gradleを編集すると、黄色い帯と Sync Now の文字が表示されると思いますので、そのまま Sync Now をクリックします。
以上で作業は終了です。
私の環境では問題なくビルドから実機での起動まで正常に動作しました。

 

もし、同じようにAndroid Studioのバージョンを上げてCordovaで開発しているアプリが動かなくなった場合は、是非こちらの方法を試してみてください。

  • この記事いいね! (2)
村上 著者:村上

【気になるニュース】Android版のGoogleマップに乗り過ごし防止機能が追加!

気になるニュースを見つけたのでご紹介。
私はAndroidのスマホを愛用しているのですが、12月14日にGoogleがAndroid版のGoogleマップに乗り過ごし防止の機能を追加したとのことです。

ニュースの記事はこちらから。

Android版「Googleマップ」に乗り過ごし防止機能
http://www.itmedia.co.jp/mobile/articles/1712/18/news060.html

私は実家に帰省する際に、バスと電車を利用するのですが、特に電車は乗車時間が約1時間ほどと、そこそこ移動時間がかかります。
そのため、座れた時などは良く文庫本を読んでいるのですが、心配性なので、毎回駅に留まるたびに顔を上げて現在地点を確認して、と…これが少し面倒くさい。
夢中になると周りの音が聞こえなくなるタチなので、逆にあまり集中しすぎずに済むので良いのですが、せめて30分くらいは集中して読みたいところ。

 

その点、今回追加された機能を使えば、こまめに現在地を確認する必要もなくなって便利そう。

使い方は簡単で、まずGoogleマップで目的地を設定し、交通手段を選択。

複数のルートが表示される場合は、任意のルートを選択し、最後に右下の「開始」ボタンをタップします。

こうしておくと、目的の駅に着く数十秒前プッシュ通知が送信されてくるとのこと。
設定をすれば、端末の振動もするそうなので、もしも本に夢中になったとしてもきちんと気づいて下車できそうですね。

ずっとナビを起動しておくので、バッテリー消費が激しそうですが、一度試してみたいですね。
特に、一度眠りかけて乗り過ごしそうになったバスで使ってみたいです。

  • この記事いいね! (0)
村上 著者:村上

【Android】setVisibilityを使ってボタンを表示・非表示にする方法

ちょっとボタンの表示・非表示を使うことがあったのでメモとして。

なお、今回ボタンはこのように定義しています。

// ボタンの定義
Button btn;
btn= (Button) findViewById(R.id.button);


で、ボタンを非表示にする場合、setVisibility() メソッドを利用します。

// ボタンを非表示にする
btn.setVisibility(View.INVISIBLE);
btn.setVisibility(View.GONE);

引数は、View.INVISIBLEView.GONE のどちらかを指定します。

 

そして今回迷ったのが、こちらの引数でどちらを使うのか、です。
どちらも非表示には変わりないのですが、微妙に挙動が違います。

まず、View.INVISIBLE
こちらは、単に見えなくなるだけで、ボタンの領域は確保されたままです。
CSSでいうところの、visibility:hidden の挙動と同じですね。

次に、View.GONE
こちらは、ボタンの領域を確保せず、非表示にしたボタンのエリアを詰めて表示します。
View.INVISIBLEが「隠す」というイメージに対して、View.GONE は「削除」というイメージですね。
CSSでは、display:none の挙動に近いです。

ちなみに、今回は View.INVISIBLE を使いました。

 

なお、ボタンを表示する場合はこちら。

// ボタンを表示する
btn.setVisibility(View.VISIBLE);

引数に View.VISIBLE を指定します。

 

こういう違いって、いざ使おうとするとどちらがどちらの挙動だったかをすぐ忘れてしまいます。
もしくは、引数をどう指定するかとかも忘れやすいので、今回、備忘録としてまとめてみました。
結構よく使うメソッドなので、少しでも参考になれば。

  • この記事いいね! (0)
著者:aoki

弊社ではDeepLearningを用いた画像認識アプリの開発を進めています

現在弊社ではDeepLearningを用いた画像認識のアプリ開発を行っています。

今開発しているアプリは花を認識するサービスで「Floen」という名前でリリースを予定しております。


こちらはアプリのスクリーンショットです。
枠の中に花を入れて撮影することでサーバ側で何の花なのかを画像認識して結果を返します。
画像認識自体はTensorFlowとAlexNetを利用しておりいわゆる畳み込みニューラルネットワーク(CNN)ですね。

ただ課題はまだ学習が足りず認識精度が高くないという所でどれだけ効率よく学習させるかですね。
アプリを通して撮影された写真も学習データとなりますのでリリースできましたら是非皆様に使っていただきたいです。
アプリ自体はリリース準備を進めており現在審査待ちですのでもうしばらくお待ちください。

  • この記事いいね! (0)