monacaで作るアプリでメディアスキャンを行う方法

moanacaで文字を画像化するアプリを作るのに困ったこと

今回作ったもの

文字画像

文字をいろんな色、フォントで画像化するアプリ
使ったもの:canvas

MONACAでメディアスキャンができないので何とかする

monacaではファイルをローカルに保存しても他のアプリから見ることはできません(アルバムアプリとか)。
ContentResolverやMediaScanConnectionによってファイルをシステムに認識させる必要があります。

結論

monacaではできません。
GOLD以上のプランなら独自プラグインを使えるのでそれで対応できるかもしれません。
お金がないので今回はcordovaで作ることにします。

monacaからプロジェクトエクスポート

まずはmonaca上で作っていたアプリを吐き出します。
プラグインは吐き出されません。
ビルドの設定は吐き出されるので先にmonacaに登録しておけば後々楽です。

cordovaのインストール

  1. node(npm)のインストール
  2. npm install -g cordova

monacaからcordovaへ

  1. cordova ベースでプロジェクトを作成します

    • cordova create フォルダ名 パッケージ名 アプリ名 -d
    • cordova create folder com.hoge.fuga HogeFuga -d
    • cordova platform add android
    • www,platforms\resフォルダの中身を置き換える
  2. pluginの追加(monacaで使ったものとMediaScan)

    • cordova plugin add https://github.com/apache/cordova-plugin-file.git

    • cordova plugin add https://github.com/apache/cordova-plugin-file-transfer.git

    • cordova plugin add https://github.com/apache/cordova-plugin-splashscreen

    • cordova plugin add https://github.com/Pandazaur/cordova-plugin-android-mediascanner

      • プラグインの使い方

        window.plugins.scanmedia.scanFile(
          FILEPATH,
          function (msg) {console.log("Success ScanMedia");},
          function (err) {console.log("Fail ScanMedia: " + err);
        });
        
  3. デプロイ(jdkとandroid-sdkが必要)

    • 準備
      • ..\jdk\bin\sdk\build-tools\[version]\を環境変数Pathに追加する
      • 署名のためにmonacaからkeystore.privateをダウンロード
    • ビルド:cordova build --release
      • folder\platform\android\build\outputs\android-release-unsigned.apkができる
    • 署名1: keytool -genkey -v -keystore keystore.private -alias alias -keyalg RSA -validity 10000
    • 署名2: kjarsigner -verbose -keystore keystore.private xxx.apk alias
      • パスワードは2つ必要になる
      • monacaだと普段1つしか使わないので忘れていたらあきらめる
    • 最適化:zipalign -v 4 android-release.apk android-release-opt.apk
      • 必須。これをしないと配布できない。

感想

monaca使うとかなり楽できてるのが実感できた。
phonegap使おうと思ったらしょっぱな404だったけどあれはいったいなんなのか。