1

私はアンドロイドプログラミングが初めてです。位置情報に敏感なアプリを作る予定です。

Google Play Services の位置情報ベースの API を使用して、ユーザーの現在位置を検出しようとしています。このために、私はサンプルコードとここに記載されている詳細に従っています:-

developer.android.com- ユーザーの現在地を検出- Location APIs- Google Play サービス

ユーザーの現在地の検出に関連するさまざまなメソッド呼び出し間の関係を理解し​​ようとしています。上記のリンクには多くの情報があるようですが、初心者なので、ここで別のメソッド呼び出しを接続するのは難しいと思います。

したがって、上記の URL のコードから大まかに理解できるのは次のとおりです:-

  1. MainActivity クラスの onCreate() で、LocationClient を作成します。LocationClient は、位置情報サービスへの接続に使用されます。
  2. MainActivity クラス内の onStart() で、locationClientObjet.connect() を呼び出します。これは、アプリの MainActivity が表示されるたびに、位置情報サービスへの接続が試行されることを意味します。
  3. LocationClient を作成する前に、位置情報サービスのコールバックとして知られるものを既に定義していました。
  4. したがって、必要なインターフェースを実装し、それぞれのメソッドを定義します。たとえば、クライアントへの接続要求が正常に終了すると、onConnected() が呼び出されます。

これまでのところ、すべてが良さそうです。上記の部分を以下の部分に接続しようとすると、問題が発生します:-

  1. Location Services CallBacks を定義する前に、MainActivity クラス内に ErrorDialogFragment という内部クラスを定義しました。このクラスは、位置情報サービスへの接続試行が何らかの理由で失敗したように見える場合に、ユーザーにエラー メッセージを表示できるエラー フラグメント (アラート ボックスなど) を作成するために使用されると思われます。したがって、ここで理解できないことがいくつかあります:-
  • CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000; の使用は何ですか? このページのドキュメントには次のように書かれています: - Google Play サービスに送信するリクエスト コードを定義します。このコードは、Activity.onActivityResult で返されます。ぜんぜんわかりません。
  • ErrorDialogFragment クラス内の onCreateDialog() が呼び出されるのはいつですか。上記の URL のページに記載されているサンプル コードのどこにも、このメソッドへの明示的な呼び出しが見つかりません。
  • onConnectionFailed() とエラー フラグメントの間の接続は何ですか。
  • さらに 2 つのメソッドが定義されています: onActivityResult() と servicesConnected()。servicesConnected() の使用をある程度理解しています。これは、GooglePlay サービスが利用可能かどうかを確認するために使用されます。ユーザー定義メソッドですか?そして、コールバック メソッド onConnected()、onDisConnected()、および onConnectionFailed() 内で行われていたのと同じことを行っていませんか。そうでない場合、 servicesConnected() とどう違うのですか?
  • 最後に、onActivityResult() の使用方法がわかりません。ここで何をしようとしているのでしょうか。

私の無知を許してください。私は Android プログラミングにまったく慣れていないので、明確で健全な概念を学ぼうとしています。私が間違っていたり誤解したりしたところはどこでも修正してください。Vogella のリソースを調べてみましたが、あまり役に立ちませんでした。上記の概念を明確にする詳細を説明する優れたリソースは、大きな助けになります。

4

1 に答える 1

3

Q : CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000; の使用は何ですか? > ページのドキュメントには次のように書かれています:- Google Play サービスに送信するリクエスト コードを定義します。このコードは > Activity.onActivityResult で返されます。ぜんぜんわかりません。

A : CONNECTION_FAILURE_RESOLUTION_REQUEST は、定義したリクエスト コードです。MainActivity が終了すると、onActivityResult はリクエスト コードを取得します。すなわち。CONNECTION_FAILURE_RESOLUTION_REQUEST (または USER_DEFINED_REQUEST_CODE) これは、startActivityForResult(Intent,) によって指定されます。これはここで行われます

connectionResult.startResolutionForResult(this,CONNECTION_FAILURE_RESOLUTION_REQUEST);

それ自体が内部的に startActivityForresult を呼び出します

使用方法は、onActivityResult を定義する前に、特定のサンプル コード'MainActivity.java' でコメントの形式で指定されます。ここでは、次のように引用されています。

/* * startActivityForResult() で開始された他のアクティビティによってこのアクティビティに返された結果を処理します。特に、* LocationUpdateRemover と LocationUpdateRequester のメソッド onConnectionFailed() は、* startResolutionForResult() を呼び出して、Google Play サービスの問題を処理する * アクティビティを開始する場合があります。* この呼び出しの結果は、ここで onActivityResult に返されます。*/

Q : ErrorDialogFragment クラス内の onCreateDialog() が呼び出されるのはいつですか。> 上記の URL のページに記載されているサンプル コードのどこにも、このメソッドへの明示的な呼び出しが見つかりません。

A: ここから呼び出されます :

// DialogFragment にエラー ダイアログを表示します

errorFragment.show(getSupportFragmentManager(),
                    "Location Updates");

onCreateDialog はダイアログをダイアログ キャッシュに追加し、show メソッドはそれを呼び出します。

Q: onConnectionFailed() とエラー フラグメントの間の接続は何ですか。

A: onConnectionFailed は、クライアントを Google Play サービスに接続するときにエラーが発生したときに呼び出されるコールバック メソッドです。エラー リストは、 http://developer.android.com/reference/com/google/android/gms/common/ConnectionResult.htmlの「概要」セクションにあります。

エラーが発生し、何らかの解決策がある場合、エラー フラグメントはそれを解決しようとします。http://developer.android.com/reference/com/google/android/gms/common/ConnectionResult.html#hasResolution()http://developer.android.com/reference/com/google/android/を見てください gms/common/ConnectionResult.html#startResolutionForResult(android.app.Activity , int)

ここで、'this' は MainActivity を指し、CONNECTION_FAILURE_RESOLUTION_REQUEST は、ここで暗黙的に呼び出される startActivityForResult によって呼び出されるユーザー定義の要求コードです。

connectionResult.startResolutionForResult(
                        this,
                        CONNECTION_FAILURE_RESOLUTION_REQUEST);.

Q: さらに 2 つのメソッドが定義されています: onActivityResult() と servicesConnected()。servicesConnected() の使用をある程度理解しています。これは、GooglePlay サービスが利用可能かどうかを確認するために使用されます。ユーザー定義メソッドですか?そして、コールバック メソッド onConnected()、onDisConnected()、および onConnectionFailed() 内で行われていたのと同じことを行っていませんか。そうでない場合、 servicesConnected() とどう違うのですか?

A: はい、servicesConnected はユーザー定義のメソッドです。

isGooglePlayServicesAvailable() を介して Google Play サービスが利用可能かどうかを確認しています。

一方、OnConnected() は、isGooglePlayServicesAvailable が true を返した後に呼び出されます。したがって、サービスが接続または切断された後に動作し、 servicesConnected() は接続されているかどうかを確認するだけです。

Q: 最後に、onActivityResult() の使用方法がわかりません。ここで何をしようとしているのですか?

これは、以前の回答から明らかであることを願っています:)

于 2014-05-04T12:09:28.960 に答える