/android_camera_demo

NCMB Android camera demo

Primary LanguageJava

【Android】写真をクラウドに保存しよう! for Java

画像1

概要

  • ニフクラ mobile backend の『ファイルストア機能』を利用して、「撮った写真をクラウドに保存する」内容を実装したサンプルプロジェクトです
  • 簡単な操作ですぐに ニフクラ mobile backendの機能を体験いただけます

ニフクラ mobile backendって何??

スマートフォンアプリのバックエンド機能(プッシュ通知・データストア・会員管理・ファイルストア・SNS連携・位置情報検索・スクリプト)が開発不要、しかも基本無料(注1)で使えるクラウドサービス!今回はデータストアを体験します

注1:詳しくはこちらをご覧ください

画像2

動作環境

  • MacOS Mojave v10.14.6 (18G103)
  • Android studio: 3.4.1
  • Simulator: Pixel 2 Android OS Version 10

※上記内容で動作確認をしています

手順

1. ニフクラ mobile backend の会員登録・ログインとアプリの新規作成

  • 下記リンクから会員登録(無料)をします
  • 登録ができたら下記リンクからログインします
  • 下図のように「アプリの新規作成」画面が出るのでアプリを作成します
    • 既に mobile backend を利用したことがある方は左上の「+新しいアプリ」をクリックすると同じ画面が表示されます

画像3

  • アプリ作成されると下図のような画面になります
  • この2種類のAPIキー(アプリケーションキーとクライアントキー)は先ほどインポートしたAndroidStudioで作成するAndroidアプリにニフクラ mobile backendの紐付けるため、あとで使います

画像4

  • 動作確認後に写真(画像)が保存される場所も確認しておきましょう

画像5

2. サンプルプロジェクトのダウンロード

  • 下記リンクをクリックしてプロジェクトをダウンロードします
  • https://github.com/NIFCLOUD-mbaas/android_camera_demo/archive/master.zip
  • ダウンロードしたプロジェクトを解凍します
  • AndroidStudio を開きます、「Open an existing Android Studio project」をクリックして解凍したプロジェクトを選択します

画像6

  • プロジェクトを開きます

画像7

3. SDKの導入(実装済み)

※このサンプルアプリには既にSDKが実装済み(下記手順)となっています。(ver.3.0.2)
最新版をご利用の場合は入れ替えてご利用ください。

  • SDKダウンロード SDKはここ(SDK リリースページ)から取得してください.
    • NCMB.jarファイルがダウンロードします。
  • SDKをインポート
    • app/libsフォルダにNCMB.jarをコピーします
  • 設定追加
    • app/build.gradleファイルに以下を追加します
dependencies {
    implementation 'com.google.code.gson:gson:2.3.1'
    implementation files('libs/NCMB.jar')
}
  • androidManifestの設定
    • タグの直前に以下のpermissionを追加します
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

4. APIキーの設定

  • AndroidStudio で MainActivity.java を開きます
    • ディレクトリはデフォルトで「Android」が選択されていますので、「Project」に切り替えてから探してください

画像09

  • APIキー(アプリケーションキーとクライアントキー)の設定をします

画像8

  • それぞれYOUR_APPLICATION_KEYYOUR_CLIENT_KEYの部分を書き換えます
  • このとき、ダブルクォーテーション(")を消さないように注意してください!

5. 動作確認

  • エミュレーターでアプリをビルドします
  • 失敗する場合は一度「Clean Project」を実行してから再度ビルドしてください
  • アプリが起動したら
    1. 「CAMERA」ボタンをタップして、写真を撮影します
    2. 「保存」ボタンをタップして、保存します
    • 今回はファイル名固定しています:test.png
  • ニフクラ mobile backend 上に画像が保存されると、アプリの画面に画像表示されます

画像9

  • 保存に成功したら、ニフクラ mobile backend の管理画面から「ファイルストア」を確認してみましょう!

画像10

  • 簡単に写真がクラウドに保存できました

解説

サンプルプロジェクトに実装済みの内容のご紹介します。

  • activity_main.xmlでデザインを作成し、MainActivity.javaにロジックを書いています

ファイルのアップロード

  • ファイルストアを利用するには、SDKが提供する NCMBFile を使用します
  • ファイルのアップロードを行うには、このクラスが提供する saveInBackground メソッドを利用します(非同期処理)
  • ファイル名を固定しているため、新しくファイル(画像)を保存すると上書きされます
file = new NCMBFile("test.png", dataByte, acl);
file.saveInBackground(new DoneCallback() {
    @Override
    public void done(NCMBException e) {
        String result;
        if (e != null) {
            //保存失敗

        } else {
    //保存成功

}

アップロードしたファイルを取得

  • ファイルストアに保存したものを取得するには、fetch メソッドを利用します(同期処理)
    • fetchInBackground メソッドでの非同期処理も利用可能です
  • ファイルの取得時には、ファイル名を先に取得する必要があります(今回はファイル名固定:test.png)
file = new NCMBFile("test.png");
file.fetchInBackground(new FetchFileCallback() {
    @Override
    public void done(byte[] dataFetch, NCMBException er) {
        if (er != null) {
            //失敗処理

   } else {
       //成功処理

   }
}

参考