0

Androidアプリ開発初心者です。私のアプローチが正しいかどうか、Android の世界でのベスト プラクティスに従っているかどうかを確認したいと思います。

テキストデータ(グラフィック、ビデオなし)を必要とするAndroidアプリケーションがあります。データは、JSON 文字列として REST ベースの Web サービスから取得されます。HttpGet オブジェクトを使用してこの Web サービスを使用し、JSONArray を使用して json 文字列を解析し、データを表示します。

これはすべて、ボタンのクリックで発生します。

私の質問は次のとおりです。

  1. 同じことを行うためのより良い(またはアンドロイドスタイルの)アプローチはありますか?
  2. グラフィック コンテンツを取得して REST ベースの Web サービスに投稿するための推奨される方法は何ですか?

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

1

私のインライン コメントを見つけてください。これはすべてボタン クリックで行われます。

私の質問は次のとおりです。

同じことを行うためのより良い(またはアンドロイドスタイルの)アプローチはありますか?

非同期タスクまたはサービスで Web サービス呼び出しをトリガーするための理想的なアプローチです。これにより、HTTP が起動して応答を取得するまで UI スレッドがブロックされなくなります。

グラフィック コンテンツを取得して REST ベースの Web サービスに投稿するための推奨される方法は何ですか?

バックエンドから取得しようとすると、通常、グラフィックス コンテンツは base64 になります。この例を参照してください: http://androidtrainningcenter.blogspot.in/2012/03/how-to-convert-string-to-bitmap-and.html

グラフィックをサーバーに投稿するために、アップロードする画像のパスとファイル名を知っていると仮定します。イメージをキー名として使用して、この文字列を NameValuePair に追加します。

画像の送信は、HttpComponents ライブラリを使用して行うことができます。最新の HttpClient (現在は 4.0.1) バイナリと依存パッケージをダウンロードし、apache-mime4j-0.6.jar と httpmime-4.0.1.jar をプロジェクトにコピーして、Java ビルド パスに追加します。

クラスに次のインポートを追加する必要があります。

org.apache.http.entity.mime.HttpMultipartMode をインポートします。org.apache.http.entity.mime.MultipartEntity をインポートします。org.apache.http.entity.mime.content.FileBody をインポートします。org.apache.http.entity.mime.content.StringBody をインポートします。MultipartEntity を作成して、POST 要求に画像を添付できるようになりました。次のコードは、これを行う方法の例を示しています。

public void post(String url, List nameValuePairs) { HttpClient httpClient = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); HttpPost httpPost = 新しい HttpPost(url);

try {
    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

    for(int index=0; index < nameValuePairs.size(); index++) {
        if(nameValuePairs.get(index).getName().equalsIgnoreCase("image")) {
            // If the key equals to "image", we use FileBody to transfer the data
            entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue())));
        } else {
            // Normal string data
            entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue()));
        }
    }

    httpPost.setEntity(entity);

    HttpResponse response = httpClient.execute(httpPost, localContext);
} catch (IOException e) {
    e.printStackTrace();
}

}

お役に立てれば!

于 2013-01-08T16:26:48.033 に答える
0

このリンクを参照してください。これにより、Android アプリで必要な json データの解析をより適切にトレーニングできます。グラフィックの読み込みには、ここから参照できる遅延読み込みメカニズムが必要でした。

于 2013-01-08T14:05:42.177 に答える