Android Consumer SDK のモジュール化の移行

Consumer SDK for Android を使用すると、 構築できます。API の一部は必要な部分と 独自の API と統合できます。 Consumer SDK さまざまな機能の API が別々のモジュールにカプセル化されています。

ライドシェアリング アプリで以前のバージョンの Consumer SDK を使用している場合は、 このモジュラー アーキテクチャを使用するには、アプリをアップグレードする必要があります。この 移行ガイドでは、アプリのアップグレード方法について説明します。

概要

Consumer SDK のモジュラー アーキテクチャでは、 ユーザー インターフェースの状態を保持する Session オブジェクト。以前のバージョンの場合 状態間でやり取りされます。あり 使用するには、まず Session オブジェクトを作成し、 地図上にセッションを表示するオプションがありますセッションがない場合 地図は空白になります。「空の」状態はなくなりました。 「初期化済み」であるあります。

Session オブジェクトは、モジュールの単一のライフサイクル使用インスタンスを表します。 セッションは、モジュール API へのアクセス ポイントです。たとえば 移動経路の共有セッションは、単一の移動をたどるものです。操作 Session オブジェクトと組み合わせてルートを監視します。

Session オブジェクトはモジュール タイプに関連付けられます。Session オブジェクトの 動作は、その初期化に使用されるオブジェクトのライフサイクルにリンクされます。

TRIP_A を追跡するために TripModel オブジェクトを作成するとします。 TRIP_A の TripModel オブジェクトを再度取得しようとすると、次のようになります。 同じ TripModel オブジェクトを取得します。TRIP_B を追跡するには、 TripModel オブジェクト。

セッションの状態

セッションは次のいずれかの状態になります。

  • 作成されたセッションは、Session オブジェクトで表されます。自分で作成 create メソッドを呼び出してセッションを作成します。例:

    JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
    
  • 開始されたセッションは、データと値を更新するために登録されます。 UI 要素ですセッションを開始するには start メソッドを使用します。例:

    sessionA.start()
    
  • 表示されているセッションは自動的に開始されます。ユーザー インターフェースの要素 データの更新に応じてそれらを更新します。セッションを表示する showSession メソッドを呼び出します。例:

    ConsumerController.showSession(sessionA)
    
  • 停止したセッションはデータの更新を停止し、セッションの更新も停止します。 ユーザー インターフェース要素です。セッションを停止するには、stop メソッドを呼び出します。 例:

    sessionA.stop()
    

データ専用コンポーネントとユーザー インターフェース コンポーネントを使用する

ライドシェアリング アプリを作成するには、データ通信専用コンポーネントのいずれかを使用します On-demand Rides and Deliveries Solution が提供するユーザー インターフェース要素 API を使用できます。

データ専用コンポーネントの使用

データ専用コンポーネントを使用してライドシェアリング アプリを作成するには:

  • ConsumerApi オブジェクトを初期化します。
  • ConsumerApi から TripModelManager オブジェクトを取得します。
  • TripModelManager を使用してルートのモニタリングを開始し、TripModel オブジェクトを受け取ります。
  • TripModel オブジェクトにコールバックを登録します。

次の例は、データのみのコンポーネントを使用する方法を示しています。

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})

ユーザー インターフェース要素の API を使用する

ConsumerController オブジェクトを使用してアクセスする On-demand Rides and Deliveries Solution ユーザー インターフェース要素の API。

On-demand Rides and Deliveries Solution のユーザー インターフェースを持つライドシェアリング アプリを作成する 要素 API:

  • ConsumerApi オブジェクトを初期化します。
  • ConsumerApi オブジェクトから TripModelManager オブジェクトを取得します。
  • 1 つのルートを追跡する TripModelManager から TripModel オブジェクトを取得します。
  • ConsumerMap[View/Fragment] をアプリケーション ビューに追加します。
  • ConsumerMap[View/Fragment] から ConsumerController オブジェクトを取得します。
  • TripModel オブジェクトをコントローラに渡して、JourneySharingSession オブジェクトを取得します。
  • コントローラを使用して JourneySharingSession を表示します。

次の例は、ユーザー インターフェース API の使用方法を示しています。

TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");

// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);

// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions

// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();

モジュラー アーキテクチャ コードの変更

ライドシェアリング アプリで以前のバージョンの Consumer SDK を使用している場合は、 更新するには、コードの変更が必要になります。 このセクションでは、その一部について説明します。

位置情報の利用許可

FINE_LOCATION 権限が不要になりました 使用します。

ルート監視

更新されたモジュラー アーキテクチャでは、両方のコード変更が必要 データレイヤとユーザーインターフェースの ユーザーインターフェースです

以前のバージョンでは、データレイヤーのユーザーが 次のコードを使用します。

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})

データレイヤのユーザーは、モジュラー アーキテクチャを使用して 次のコードを使用します。

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})

それより前のバージョンでは、ユーザー インターフェースのユーザーがルートの監視を行っていました。 次のコードを使用します。

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")

ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()

モジュラー アーキテクチャでは、ユーザー インターフェースのユーザーが 次のコードを使用します。

ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");

ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);

地図を中央に表示し直す

マップビューまたはフラグメントがユーザーの現在地にズームされなくなる 初期化時に発生します。引き続き アクティブな移動経路の共有セッションが自動的にズームされ、 AutoCamera 機能が有効になっているため。AutoCamera はデフォルトで有効になっています。

それより前のバージョンでは、次のコードを使用してカメラの中心を合わせていました。 :

consumerController.centerMapForState()

モジュラー アーキテクチャでは、次のコードを使用します。

CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
   googleMap.animateCamera(cameraUpdate);
   // OR googleMap.moveCamera(cameraUpdate);
}

以前のバージョンで AutoCamera 機能を無効にするには、次のコードを使用します。

consumerController.disableAutoCamera(true);

モジュラー アーキテクチャでは、次のコードを使用します。

consumerController.setAutoCameraEnabled(false);

カスタマイズ

オンデマンド配車と配達ソリューションのカスタム FAB が地図から削除されました。

カスタム FAB

FAB に関連するメソッドも削除されました。

ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()