▼ 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(通知)のテスト







