tsurutanのつぶやき

備忘録としてつぶやきます

Android StudioでのAviary導入方法

ブログを書くのは初めてですので、おかしな点がありましたらご指摘して頂けると幸いです。まず皆さんはAviaryをご存知である事を前提に話を進めますが、一応Aviaryとは何なのかの説明をのせておきます。

説明
Aviaryは、写真をどこでも手軽にすばやく簡単に編集するために誕生した、機能的なフォトエディタです。
必要なツールはすべて揃っているので、直観的なインターフェースで編集作業がおこなえます。
機能
✮ ワンタップで自動画質向上
✮ 12種類の無料のフォトエフェクト
✮ 楽しいステッカー
✮ カラーバランス機能
✮ トリミングと回転機能
✮ 明るさ、コントラスト、色温度、彩度の調整機能
✮ シャープネスとぼかし機能
✮ 描画とテキストの挿入機能
✮ 自分だけのミーム
✮ 化粧ツール:赤目修整、傷の消去、歯のホワイト修正機能
ボーナス
✮エフェクトパックが購入可能(12種類のエフェクトは無料で利用できますが、さらに追加することができます)
✮高解像度で出力
ドラッグアンドドロップツールセットをカスタマイズ
✮ホーム画面からフォトライクビューの中にある最近の写真をスクロール

要するにAviaryとは万能な画像エディターツールなのです。太っ腹にもこのツールは無料提供されていますので、みなさんのアプリにどんどん入れちゃいましょう!それでは本題に入りたいと思います!

Android Studioでの導入方法

f:id:tsurutan:20141005170953p:plain

 


1.

まずはお使いのAndorid Studioを使いルートプロジェクトにあるbuild.gradleを開きましょう。

そこにはrepositoriesやdependenciesといったブロックがあります。

repositoriesには

repositories {
    mavenCentral()
    maven {
        name 'maven.aviary.com'
        url uri("http://maven.aviary.com/repo/release")
    }
}

dependenciesには

compile 'com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351'

と記入してください。またandroidのブロックにpackagingOptionsというブロックを作り以下のように記入してください。

exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'

また、AviaryはtargetSdkVersion 19 、API Level10以上を対象としているので以下のようにしましょう。

minSdkVersion 10

targetSdkVersion 19

全体的にはこのようになるはずです。

apply plugin: 'android'

repositories {
    mavenCentral()
    maven {
        name 'maven.aviary.com'
        url uri("http://maven.aviary.com/repo/release")
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
          runProguard false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }   

    packagingOptions {
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }               

}

dependencies {
    compile 'com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351'
}

 

2.

次にAndoridManifest.xmlを開きます。このときAPI KEYを使いますのであらかじめこちらで取得してください。

Aviary SDK | Android Documentation

AndroidManifest.xmlの内にある<application>のタグの中に

        <meta-data
            android:name="com.aviary.android.feather.v1.API_KEY"
            android:value="ここにAPI KEYを記入" />

と記入してください。

またAviary-SDKを導入するためには2つのpermissionを加えなければなりません。<manifest>タグ内に以下のように記入しましょう。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

これは任意なのですがAviaryにはバイブ機能もついていますのでこちらの機能も使いたければ同様に

<uses-permission android:name="android.permission.VIBRATE" />

と記入しましょう。

次にAviaryで使われるアクティビティを<application>のタグ内に以下のように記入しましょう

<!-- Main Editor Activity -->
<activity
    android:name="com.aviary.android.feather.sdk.FeatherActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="unspecified"
    android:hardwareAccelerated="true"
    android:largeHeap="true"
    android:process=":aviarysdk"
    android:theme="@style/AviaryTheme" />
   <!-- Alert -->
    <activity
        android:name="com.aviary.android.feather.sdk.AlertActivity"
        android:launchMode="standard"
        android:noHistory="true"
        android:theme="@style/AviaryTheme.Dialog">
        <intent-filter>
            <action android:name="aviary.intent.action.ALERT"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <!-- CDS Content Service -->
    <service
        android:process=":aviarycds"
        android:name="com.aviary.android.feather.cds.AviaryCdsService"
        android:exported="false">
        <intent-filter>
            <action android:name="aviary.intent.action.CDS_DOWNLOAD_START"/>
            <action android:name="aviary.intent.action.CDS_RESTORE_USER_ITEMS"/>
        </intent-filter>
    </service> 

    <!-- 
        Cds Content Provider, 
        NOTE that the "authorities" value MUST be formatted in this way:
        android:authorities="{your.packagename}.AviaryCdsProvider"
     -->
    <provider
        android:name="com.aviary.android.feather.cds.AviaryCdsProvider"
        android:authorities="{ここにパッケージ名を}.AviaryCdsProvider"
        android:process=":aviarycds"
        android:exported="false"
        android:syncable="true" />  
  <receiver 
        android:name="com.aviary.android.feather.cds.AviaryCdsReceiver"
        android:process=":aviarycds" >
        <intent-filter>
            <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
        </intent-filter>
    </receiver>

これで下準備は終了しました。おつかれさまです。

3.

次にAviaryを呼び出したいクラスに以下のように記入します。

Intent newIntent = new Intent( this, FeatherActivity.class );
newIntent.setData( Uri.parse("content://media/external/images/media/32705") );
newIntent.putExtra( Constants.EXTRA_IN_API_KEY_SECRET, "ここにAPI SECRETを" );
startActivityForResult( newIntent, 1 );    

この形式は全てのツールが使える最も簡単なAviaryの呼び出し方です。

特定のツールだけ使いたいという方は次回に説明いたしますのでご安心ください。

4.

Aviaryを使って編集が終わったあとに呼び出される処理はこのように記入します。(先ほど呼び出しを行ったアクティビティに記入してください。)

@Override
public void onActivityResult( int requestCode, int resultCode, Intent data ) {
    if( resultCode == RESULT_OK ) {
        switch( requestCode ) {
            case 1:
                // output image path
                Uri mImageUri = data.getData();
                Bundle extra = data.getExtras();
                    if( null != extra ) {
                        // image has been changed by the user?
                        boolean changed = extra.getBoolean( Constants.EXTRA_OUT_BITMAP_CHANGED );
                    }
                break;
        }
    }
}

これで一通りAviaryは使えるはずです。みなさんおつかれさまでした。

f:id:tsurutan:20141005200948p:plain

次回はAviary UIのデザインの変え方、特定のツールのみを使う方法について書きたいと思います。