▼ HttpAccess パッケージのダウンロード ( 解凍して、main\java フォルダの中に コピーして下さい ) ※ OkHttp より 最新の Gradle の記述を取得して build.gradle の dependencies の最後に貼り付けて下さい 例) compile 'com.squareup.okhttp3:okhttp:3.8.1' 処理概要 ボタンをクリックした後、HttpAccess クラスでファイルをダウンロードする download メソッドを実行するテンプレートです。サンプルでは画像を使用して、ダウンロードした後に ImageView に表示していますが、ダウンロード処理だけならば、どのようなファイルでもかまいません。 ここでは、パッケージ内に保存していますが、OutputStream を引き渡すので、他の保存場所でも問題はありません。 ※ onAsyncTaskListener の引数の文字列は、http のステータスコードなので、通常は 200 が返ります。インターネットのアクセスそのものが成功すれば、null 以外が返ります。 MainActivity
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import com.example.lightbox.web.HttpAccess; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class MainActivity extends AppCompatActivity { private HttpAccess httpAccess; private ImageView imageView; private String image_url; private OutputStream outputStream; private Bitmap bitmap; private BitmapFactory.Options options; private InputStream inputStream; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ダウンロードでは、URL をメソッドで指定します httpAccess = new HttpAccess(""); imageView = (ImageView) MainActivity.this.findViewById(R.id.imageView); image_url = "https://lightbox.sakura.ne.jp/demo/image/sample.jpg"; // ボタンをクリック MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { // 保存ファイル outputStream = MainActivity.this.openFileOutput("save.jpg", MODE_PRIVATE); // ダウンロード httpAccess.download(image_url,outputStream, new HttpAccess.OnAsyncTaskListener() { @Override public void onAsyncTaskListener(String s) { if ( s != null ) { Toast.makeText(MainActivity.this,"画像が保存されました",Toast.LENGTH_SHORT).show(); // ステータスコード Log.i("lightbox", String.format("code = %s",s)); // 画像を読み込む bitmap = null; try { options = new BitmapFactory.Options(); inputStream = MainActivity.this.openFileInput("save.jpg"); bitmap = BitmapFactory.decodeStream(inputStream, null, options); // ここではオプションは未指定 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } // 表示 if ( bitmap != null ) { imageView.setImageBitmap(bitmap); } } } }); } catch (Exception e) { e.printStackTrace(); } } }); } }
画面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
※ android.permission.INTERNET が必要です ※ コピーして使いやすいように、ソースコードにパッケージに依存する記述が無いので注意して下さい。 (画面は、.MainActivity なのでそのまま使用可能です)
|
【2017 Android Studioの最新記事】
- 別に納品するわけでは無いので、Android の ListView のカスタマイズなんてこれで十分でしょ / TestArrayAdapter バージョン2
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (5) : SQLiteデータを更新する
- ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する
- Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript
- ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』
- ViewSwitcher を使用した2画面アプリ (2) : 画面部分の作成と画面切り替えテスト『画面の作成』
- ViewSwitcher を使用した2画面アプリ (1) : 画面部分の作成と画面切り替えテスト『メニューの作成』
- OkHttp を使用した HttpAccess クラスで Web 上の PHP アプリに対してファイルをアップロードするテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の掲示板に投稿(POST)するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上のデータを取得(GET)して ListView を表示するテンプレート
- Okhttp を使用した、GET、POST、ファイルアップロードを楽に実装できる HttpAccess クラス
- Android の assets フォルダーに保存した 400x320 の画像ファイルの扱い
- Android の drawable フォルダーに保存した 400x320 の画像ファイルの6種類の扱いと Density
- Android での保存用テキストデータの扱いを okio で簡素化する
- Android 6.0 : テストの為の Runtime Permission の対応を自動化するテンプレート
- Android Studio : Runtime Permission 等の裏方作業を MainActivity にさせて、本来の処理は継承したサブクラスで行う( カメラを呼び出して画像を保存させ、I..
- Android 6.0 エミュレータで 複数の Runtime Permission の対応を簡潔に吸収するクラス( CheckMyPermission )
- Android 6.0 の Runtime Permission に対応する前に、AndroidManifest.xml に権限の記述の必要無いプライベートな書き込みで情報を収集する
- Android Studio : エミュレータで Notification(通知)のテスト