0

観光部門向けの Android アプリを開発しています。すべてのデータは、インターネットに接続せずにオフラインで利用できます。このアプリには、オフライン モードでのみデータを利用できるマップが含まれています。そのため、これには osmdroid で Openstreetmap を使用し、必要なすべての地図データは app-file に含まれています。インターネットに接続する可能性がある唯一のアクティビティは、アプリの起動時であり、利用可能な新しいデータがあるかどうかを確認し、最終的に新しいデータをアプリ フォルダーにダウンロードします。

ビューのブロック図を追加しました。 ここに画像の説明を入力

私の問題は、起動アクティビティ (画像の赤いブロック) である最初のアクティビティのみをインターネットに接続し、他のすべてのアクティビティが決してインターネットに接続できないようにする方法です。ユーザーが統合マップの領域からスクロールアウトしたときに、Openstreetmap を使用したアクティビティがインターネットに接続して新しいマップ タイルをダウンロードしないことが非常に重要であるためです。Android デバイス全体のネットワーク接続を完全にオフにすることを意図したものではないため、他のアプリでもオフになります。

よろしくお願いします!

4

2 に答える 2

0

宣言すれば

   <uses-permission /> 

マニフェストのインターネットの場合、それはすべてのアクティビティに適用されます。外部ライブラリの機能を制限することはできません。したがって、信頼できるライブラリを使用してみてください。

于 2012-03-19T08:55:59.597 に答える
0

お返事をありがとうございます!

しかし、私は自分の問題@自分の問題を解決しました。

を使用できることを知っています。それは確かに私の問題でした.必要なマップタイルがまだローカルに保存されていない場合、マップを含む画面もネットから新しいデータをダウンロードします.

osmdroid でマップ タイルのソースを選択する方法 (ローカルに保存されたタイルまたはインターネットからダウンロードする方法) をついに見つけました。osmdroid-android-xxx.jar の OpenStreetMapTilesOverlay クラスには、タイル ソースを設定する次のメソッドがあります。

/**
     * Set whether to use the network connection if it's available.
     * @param aMode
     * if true use the network connection if it's available.
     * if false don't use the network connection even if it's available.
     */
    public void setUseDataConnection(boolean aMode) {
            mTileProvider.setUseDataConnection(aMode);
    }

そこで、オフライン マップ タイルのみを使用するように次のコードを実装しました。

 mapView.setUseDataConnection(false);

mapView は私の OSM MapView です

よい発展を!

于 2012-03-20T13:56:11.053 に答える