1.
简介
简介
这篇文档将指导您使用Android Camera360编辑SDK创建一个简单的Demo工程
Camera360 SDK for ANDROID V1.2.0 下载 (Gradle)
2. 前置条件
在您开始接入之前,请确定下面的条件已经满足:
- 您需要在官网上注册应用程序(http://sdk.camera360.com)
- 您需要获取到您的应用程序对应的API Key
- 确保Android SDK在您的系统中已经正确的完成安装和配置
- 确保Android Build Tools 19.1.0或以上在您的系统中已经正确的安装
3. 系统要求
使用Android Camera360编辑SDK需满足下面的系统要求:
- 支持Android 4.0+ (API Level 14, minSdkVersion=14)
- 编译时需使用Android 4.4 (API Level 19, targetSdkVersion=19)
4. 工程环境配置
4.1 使用Android Studio
1、在App工程中,在Android Studio菜单栏选择File->New Module:
3. 系统要求
使用Android Camera360编辑SDK需满足下面的系统要求:
- 支持Android 4.0+ (API Level 14, minSdkVersion=14)
- 编译时需使用Android 4.4 (API Level 19, targetSdkVersion=19)
4. 工程环境配置
4.1 使用Android Studio
1、在App工程中,在Android Studio菜单栏选择File->New Module:
2、选择Importing Existing Project,并点击Next:
3、在界面中选择PG_Edit_SDK工程路径,点击Next:
4、在窗口中点击Finish:
5、此时模块已完成导入,接下来需要建立App工程与SDK工程之间的依赖,在App工程点击右键选择Open Module Settings:
6、在窗口中左侧列表选择App工程模块,右侧Tab选择Dependency标签栏,点击下方+号选择Module Dependency:
7、在弹出窗口中选择PG_Edit_SDK模块并点击OK:
8、这时在Dependencies窗口中应该能看见PG_Edit_SDK模块,点击OK完成工程导入:
4.2 使用Eclipse
1、在App工程中,在Package Explore中右键->选择Import
2、在弹出的Import窗口中选择:Existing Android Code Into Workspace,点击Next
3、在右侧点击Browse,选择下载的SDK代码路径,并点击确定,此时下方Projects列表会显示PG_Edit_SDK工程,接下来点击Finish
4、此时在左侧Package Explore中能看见刚导入的PG_Edit_SDK工程,下面需要建立App与SDK工程的依赖关系,在App工程点击右键选择Properties:
5、在窗口左边选择列表中选择Android,点击右侧Add按钮:
6、在窗口中选择PG_Edit_SDK工程,点击OK:
7、此时在窗口Library列表中能看见PG_Edit_SDK工程,点击OK,完成工程导入:
8、将assets目录中的内容拷贝到您的App工程的assets目录下
5. AndroidManifest.xml配置
5.1 添加API Key
在<application>标签内添加meta-data入口:
<meta-data
android:name="EDIT_SDK_KEY"
android:value="您的API Key"/>
将android:value中的内容替换为您的API Key
接下来在<application>标签内添加组件meta-data入口:
<meta-data
android:name="BD_APP_ID"
android:value="ea8d04692735bc1f"/>
<meta-data
android:name="BD_APP_SECRET"
android:value="vCGG9QZ94tcGxTjangCc_b_VuXwmfGd2"/>
5.2 添加权限
Camera360编辑SDK需要添加部分系统权限,请您在<manifest>标签内添加下列入口:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.READ_LOGS" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
5.3 添加组件
在<application>标签内添加组件入口:
<activity
android:name="us.pinguo.edit.sdk.PGEditActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<service
android:name="us.pinguo.bigdata.BDUpService"
android:process=":bdupload">
</service>
<receiver android:name="us.pinguo.bigdata.BDAlarmReceiver">
<intent-filter>
<action android:name="bd_alarm"/>
</intent-filter>
</receiver>
6. 调用Camera360编辑SDK
6.1 初始化SDK
在您的Application onCreate方法中执行下列代码:
PGEditImageLoader.initImageLoader(this);
PGEditSDK.instance().initSDK(this);
6.2 开始编辑
您只需要在您的Activity中执行下面的代码即可:
PGEditSDK.instance().startEdit(this, PGEditActivity.class, inputPath, outputPath);
其中inputPath为输入图片文件的绝对路径,outputPath为输出图片文件的绝对路径
6.3 获取编辑结果
当用户在PGEditActivity中点击了”保存"按钮,您Activity中的onActivityResult方法将被触发,同时会返回resultCode和data,您可以按照下面的代码进行处理:
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PGEditSDK.PG_EDIT_SDK_REQUEST_CODE
&& resultCode == Activity.RESULT_OK) {
PGEditResult editResult = PGEditSDK.instance().handleEditResult(data);
// 获取编辑后的缩略图
Bitmap thumbNail = editResult.getThumbNail();
// 获取编辑后的大图路径
String resultPhotoPath = editResult.getReturnPhotoPath();
}
if (requestCode == PGEditSDK.PG_EDIT_SDK_REQUEST_CODE
&& resultCode == PGEditSDK.PG_EDIT_SDK_RESULT_CODE_CANCEL) {
//用户取消编辑
}
if (requestCode == PGEditSDK.PG_EDIT_SDK_REQUEST_CODE
&& resultCode == PGEditSDK.PG_EDIT_SDK_RESULT_CODE_NOT_CHANGED) {
// 照片没有修改
}
}
PGEditResult中会返回编辑结果,其中:
- Bitmap getThumbNail()接口会返回编辑后的缩略图
- String getResturnPhotoPath()接口会返回编辑后的大图路径
7. Proguard混淆
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontshrink
-dontwarn
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.view.View
-keep public class * extends android.os.Parcel
-keep public class * implements android.os.Parcelable,
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep class android.support.v4.**{*;}
-keep class com.pinguo.Camera360Lib.**{*;}
-keep class com.nostra13.universalimageloader.**{*;}
-keep class us.pinguo.androidsdk.*{*;}
-keep class us.pinguo.edit.sdk.core.effect.**{*;}
-keep class us.pinguo.edit.sdk.core.model.PGEftDispInfo{*;}
-keep class us.pinguo.edit.sdk.core.model.PGEftPkgDispInfo{*;}
-keep class us.pinguo.edit.sdk.core.PGEditCoreAPI{*;}
-keep class us.pinguo.edit.sdk.core.IPGEditCallback{*;}
-keep class us.pinguo.edit.sdk.base.PGEditResult{*;}
-keep class us.pinguo.edit.sdk.base.PGEditSDK{*;}
-keep class us.pinguo.edit.sdk.base.controller.PGEditController{*;}
-keep class us.pinguo.edit.sdk.base.utils.ApiHelper{*;}
-keep class us.pinguo.edit.sdk.base.view.IPGEditView{*;}
-keep class us.pinguo.edit.sdk.base.PGEditConstants{*;}
-keep class us.pinguo.edit.sdk.base.bean.PGEditMenuBean$*{*;}
-keep class us.pinguo.edit.sdk.base.view.**{*;}
-keep class us.pinguo.edit.sdk.base.widget.**{*;}
-keep class us.pinguo.edit.sdk.base.PGEditTools{*;}
-keep class us.pinguo.edit.sdk.base.bean.**{*;}
-keep class us.pinguo.common.log.*{*;}
-keep class us.pinguo.common.utils.*{*;}