Firebase の環境とプロジェクトの作成方法 9.6.1 を使用する場合 エミュレータ : SDK Manager で最新に更新 実機 : Google Play 開発者サービスを最新に更新 Firebase ドキュメント : URL 経由でデータをダウンロードするgetDownloadUrl メソッドで Uri を取得した後は、通常どおり AsyncTask 内で Stream で読み込みます。 MainActivity
public class MainActivity extends AppCompatActivity {
// ダウンロード用
private FirebaseStorage storage;
private StorageReference storageRef;
private StorageReference imageRef;
private ImageView imageView;
private ProgressDialog progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ▼ テスト用のルール
// service firebase.storage {
// match /b/freebase-654b7.appspot.com/o {
// match /{allPaths=**} {
// allow read;
// allow write: if true;
// }
// }
// }
// ダウンロードするファイル
storage = FirebaseStorage.getInstance();
storageRef = storage.getReferenceFromUrl("gs://freebase-654b7.appspot.com/");
imageRef = storageRef.child("sworc2.png");
// 表示する場所
imageView = (ImageView) MainActivity.this.findViewById(R.id.imageView);
// ダウンロード中のダイアログ
progress = new ProgressDialog(MainActivity.this);
// *************************************
// 表示2 ( Uri を取得 => Stream )
// *************************************
Button button = (Button) MainActivity.this.findViewById(R.id.downloadButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ダウンロード中の表示
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setMessage("画像をダウンロードしています");
progress.show();
// ダウンロード用の URL を取得
imageRef.getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.i("lightbox","ダウンロード開始");
new AsyncTask<Uri, Void, Bitmap>(){
@Override
protected Bitmap doInBackground(Uri... params) {
Uri uri = params[0];
Log.i("lightbox",uri.toString());
URL url = null;
try {
url = new URL(uri.toString());
} catch (Exception e) {
e.printStackTrace();
}
Bitmap image = null;
// 読み込みオプション
BitmapFactory.Options options;
try {
// インターネット上の画像を取得して、Bitmap に変換
options = new BitmapFactory.Options();
// 実際に読み込む事をオプションに設定
options.inJustDecodeBounds = false;
// ストリーム取得
InputStream is = (InputStream) url.getContent();
// ストリームよりビットマップを作成
image = BitmapFactory.decodeStream(is, null, options);
// ストリームを閉じる
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return image;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if ( bitmap != null ) {
imageView.setImageBitmap(bitmap);
}
// ダウンロード中の表示解除
progress.dismiss();
}
}.execute(uri);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i("lightbox","データ取得に失敗しました");
Log.i("lightbox",e.getMessage());
// ダウンロード中の表示解除
progress.dismiss();
// メッセージ表示
Toast.makeText(MainActivity.this,"ダウンロードに失敗しました",Toast.LENGTH_LONG).show();
}
});
}
});
}
}
build.gradle(Project)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(Module: app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "lightbox.sep.fire1"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-storage:9.6.1'
compile 'com.google.firebase:firebase-auth:9.6.1'
}
apply plugin: 'com.google.gms.google-services'
※ auth はここでは使用していません ※ AndroidManifest.xml には、android.permission.INTERNET を設定
|
|
【2016 Android Studioの最新記事】
- Android Studio で Twitter4J で ListView に検索結果を表示する
- Android Studio で Twitter4J で画像付きツイート
- 内部ストレージを起点とした画像データの処理 / Android
- カメラを起点とした画像データの処理 / Android
- バグ : Android Studio 2.2.2 で、spinnerMode を dialog に設定すると app:spinnerMode となってしまいます
- ListView + カスタム ArrayAdapter + ViewSwitcher + Firebase API + Data Binding : 更新処理 / Android Studio
- Firebase storage に画像をアップロードする。1) ギャラリーから、2) 実行中の画面 / Android
- Android : 画像関連のテスト用カメラアプリ
- Firebase storage の画像を ファイルとしてダウンロードして ギャラリーに保存する( ImageView にも表示する ) / Android
- Firebase storage の画像をメモリに直接ダウンロードして ImageView に表示する / Android
- Android : Firebase の データを REST API の PUT コマンドで更新する
- Firebase API + Android Studio : Database のデータを Java に取得する方法は3通りあります。(orderByChild 使う場合は、getChildren ..
- Android : Data Binding + Firebase API で ListView にデータを表示する
- Firebase API + Android Studio : Database 処理の基本設定
- Android Studio 2.2 で新規プロジェクトを作成すると『Could not reserve enough space for 1572864KB object heap』というエラーが出..
- Firebase API + Android Studio : Database にデータを保存は単純で、DatabaseReference の setValue メソッドを使用します






