gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

validate resources reference inside android xml file

IntentServiceをコーディングを追加したので、AndroidManifest.xmlにもserviceタグを追加しましたが、タイトルのエラーがビルド時にでました。android:nameのクラス名の前には当然、ドット(.)がありますが、クラス名が赤字となっています。

AndroidStudioの左上にある「Packages」で参照すると、同じ階層にあるように見えますが、「Project」でみると全然、違う階層にありました。

「app」「src」「main」「java」「パッケージ名」に作成したクラスを移動して、ビルドすると、赤字が緑色に変わり、エラーもなくなりました。

新SignIn認証の認証情報作成方法

Stack Overflowに書かれている「New Google sign in Android」の記事でEric Leschinski氏とKaizieの回答を見てみると、SignIn認証するには、Android用とWebアプリ用に2つのOAuth IDが必要とあります。そして、それは、公式サイトの「Start Integrating Google Sign-In into Your Android App  |  Google Sign-In for Android  |  Google Developers」に書かれているとのこと。このサイトも何度か見たのですが、手っ取り早くSignIn認証したかったので、前回はgithubに転がっていたサンプルを流用しました。では、公式サイトに則って、やってみたいと思います。

1.コンフィグレーションファイルの取得

・「GET A CONFIGURATION FILE」ボタンをクリックします。

・「Create or choose an app」ポップアップ画面で「App name」を選択します。

 (選択すると、App nameの右側に以下のメッセージが表示されます。

  Services will be addes to your existing project in the Google Developers Console.)

・同ポップ画面で、Androidのパッケージ名をフルで入力します。

 (例:com.example.package_name)

・入力後、同意画面が表示され、「CONTINUED TO Choose and configure services」ボタンをクリックします。

f:id:gaggit:20160919203745p:plain

・「Google Sign-In」画面で、AndroidSHA-1認証コードが表示され、一番下の「ENABLE GOOGLE SIGN-IN」ボタンをクリックします。

 (SHA-1の情報は、以前keytoolコマンドで生成した値と同じでした)

f:id:gaggit:20160919203808p:plain

・「Choose and configuration services」画面で、「CONTINUED TO Generate configuration files」ボタンをクリックします。

f:id:gaggit:20160919203846p:plain

・「Download and install configuration」画面で、「file_download」ボタンをクリックし、コンフィグレーションファイルをダウンロードします。ダウンロードしたファイル名は、google-services.jsonです。

(以前、Fusion Tablesの認証情報の作成方法で作成したclient_id.jsonと内容は異なります。)

Android Studioの左上のタブを「Project」googleに変更し、app-配下にダウンロードしたgoogle-services.jsonをドラッグします。

 

p.s.

google-services.jsonの内容を見ると確かに2つのclient_idがありました。Stack Overflowの記事と公式サイトの記事をもっと早く見ていたら(^^;ここから後もすんなりいかないんだよなー、きっと。

 

参照サイト:

New Google sign in Android - Stack Overflow

Start Integrating Google Sign-In into Your Android App  |  Google Sign-In for Android  |  Google Developers

 

エミュレータを日本語に変更する方法

一昨日、ようやくSignIn認証できたのですが、単純に成功したってだけで、本当に使用する方法として、まだまだです。今日は、ちょっとコーヒーブレイクで、adbコマンドを使用して、エミュレータの言語を日本語に変更してみました。手順は、以下です。

1.コマンドプロンプトを開く。

2.「adb shell」を実行し、adbのシェルを使用する。

3.setprop persist.sys.locale ja; stop; sleep 5 ; start

 

f:id:gaggit:20160918143756p:plain

3.で日本語(ja)に設定後、5秒後にエミュレータが再起動し、日本語に変わります。

f:id:gaggit:20160918143728p:plain

参照サイト:

Localizing with Resources | Android Developers

OAuth2 認証方法が変更される

2週間ほど前のことですが、GoogleAuthUtilを使用して、ようやくOAuth2認証が通ったと思ったら、このAPIはもう使用するべきではなく、移植しなさいとのことorz。もう少しで、移植が完了するんですが。。。

参照サイト:

Migrate from GoogleAuthUtil and Plus.API  |  Google Sign-In for Android  |  Google Developers

 

 

Google API Clientのライブラリの設定方法

Google API Clientのライブラリの設定方法です。設定自体は、それほど難しくありませんが、説明が分かりにくいよ、Googleさん。

 

1.ダウンロードしたファイルを任意のフォルダで解凍します。

2.解凍フォルダ内のlibsフォルダのファイルを以下のフォルダに移動します。

C:\Users\ログイン名\AndroidStudioProjects\プロジェクト名\app\libs

3.AndroidStudioの左上の「Project」を選択します。

・「app」「libs」配下のファイルを右クリックして、一番下の「Add as Library」を選択します。

・「Create Library」画面では、そのまま「OK」ボタンをクリックします。

f:id:gaggit:20160818190824p:plain

4.build.gradleの設定

buil.dgradleの中で、ライブラリ、モジュールなどの依存性(Dependencies)の設定を行います。依存関係は、解凍ファイル内のreadme.html内に記述されています。

上記のlibsのファイルを設定します。

・「File」「Project Structure」をクリックし、「Dependencies」タブを選択します。

・「+」ボタンをクリックし、「Library Dependency」を選択します。

・上記のファイルをそれぞれ選択し、「OK」ボタンをクリックします。

5.AndroidManifest.xmlの編集

AndroidManifest.xmlに以下を追加します。

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

<application

   ..

  <meta-data

    android:name="com.google.android.gms.version"

    android.value="@integer/google_play_services_version"

 

以上です。

 

Android 6.0.1にアップデート後、デュアルSIM2側で4G接続ができない。

昨日、ASUSU製のFone2LaserのOSを6.0.1にアップデートして、APNを再設定し、回線には接続するようになったのですが、デュアルSIM2では接続できなくなっていました。SIM2で使用していたSIMをSIM1入れ替えて、SIM1のみにSIMを挿したところで、ようやく接続できました。4Gでの接続ですが、前のOSでは、アンテナが4本立っていたのが、今は0本です。アンテナは0本なのですが、ネットには接続できているのでアンテナ表示の不具合だと信じたいです。

Fone2LaserはデュアルSIMですが、どちらか片一方のSIMを3G以上にするともう一方は排他的に2Gの設定となるのは承知済みです。必ずSIMを挿した側を4G設定にしているのですが、SIM2側では接続できませんでした。

あと、気になったのが、「デュアルSIMカード設定」を選択すると、「推奨データネットワークのみが4Gネットワークに接続できます」とポップアップメッセージが表示されます。格安SIMは推奨データネットワークではない?(^^;ちなみにSIMは日本通信です。Windows10 Anniversary Updateに引き続き、やれやれです。

 

Fusion Tables 列名の変更と詳細設定

前回の続きです。作成されたTableを見ると、1行目と2行目の値が同じです。カラム名がない場合、1行目と同じ値で仮に列名が作成されているようなので、列名を変更したいと思います。

1.1列目の右端にカーソルを当て、▼をクリックし、「Change」をクリックします。

2.Column nameを自分の意図した列名に変更します。以前、日本語は不可の記事をネットで見たことがあるので、英字で入力することを勧めます。

3.Description:(特に入力することはありません)

7/19 03:33追記

タイトルの下に表示されるヘルプには書いてありますが、どこに表示されているのか、分かりませんでした。

これは、別のDescriptionの話でした。タイトルの下に表示されるDescriptionは、Fusion Tablesの「File」「About this table」をクリック後、「Edit table information」で変更します。

4.Typeは、列名の型を表します。「Text,Number,Location,Date/Time」から選択します。

Text:データがURLの場合、しばしばハイパーリンクまたはイメージで自動的に表示されます。

Number:整数または十進数とヘルプにありますが、小数も入力可能です。

Location:マップ用です。Locationを選択すると、下図のように「Two column location」にチェックを入れ、Latitude(経度)の列とLongitude(緯度)の列を選択します。

f:id:gaggit:20160719013227p:plain

Locationタイプを選択し、Two column locationにチェック入っていない場合、Fusion Tableで黄色く色づけされます。

「Validate data」にチェックを入れると、型チェックと空のデータをチェックしてくれます。不正なデータがあると、「Save」ボタンが無効化されるとヘルプにありますが、無効化されずにFusion Tableで不正なデータは、黄色く色づけされます。

5.Formatは、Typeにそれぞれ合ったフォーマットを表し、選択します。通常は、「None」で問題ありません。

6.List of drop-down itemsは、カンマ区切りでデータを入力することにより、次回、編集時にリストボックスとしてデータが選択できるようになります。(特に入力することはありません)

7.Custom properties JSONは、JSON形式のデータを入力することができるようです。Fusion Tables APIで使用することができるようです。(特に入力することはありません)

8.Graph predicateは、マップデータを使用したグラフをベースにしたデータモデルだそうです。(特に入力することはありません)。RDF(Resource Description Framework)グラフを記述する項目のようです。Fusion Tableのヘルプを確認すると、詳細はW3Cの仕様を見てくださいとのこと。

9.「Save」ボタンをクリックすると、Fusion Tableに戻ります。

 

参照サイト:

support.google.com

support.google.com

https://productforums.google.com/forum/#!topic/google-fusion-tables/Avr1vYSTh8I

https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#data-model.