Android Annotations配置与使用

Android Annotations官网地址:http://androidannotations.org

Android Studio配置

Project级build.gradle


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Module级build.gradle

apply plugin: 'com.android.application'
apply plugin:'android-apt'
def AAVersion='4.0.0'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.android.fileuploaddemo"
        minSdkVersion 8
        targetSdkVersion 23
        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:23.4.0'

    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"


}

apt {
    arguments {
        androidManifestFile variant.outputs[0]?.processResources?.manifestFile
        resourcePackageName "com.android.fileuploaddemo"
    }
}


简单Demo

package com.android.fileuploaddemo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.annotation.UiThread;
import android.util.Log;
import android.widget.Toast;

import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Fullscreen;
import org.androidannotations.annotations.OnActivityResult;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


@Fullscreen
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {

    private static final int CAPTURE_IMAGE_REQUEST = 100;
    private static final int RECORD_VIDEO_REQUEST = 200;

    private static final int MEDIA_TYPE_IMAGE = 1;
    private static final int MEDIA_TYPE_VIDEO = 2;

    private Uri fileUri;


    /**
     * 拍照
     */
    @Click(R.id.capture_image_btn)
    void captureImage(){
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        fileUri = getOutputFileUri(MEDIA_TYPE_IMAGE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);
        startActivityForResult(intent,CAPTURE_IMAGE_REQUEST);
    }

    /**
     * 录像
     */
    @Click(R.id.record_video_btn)
    void recordVideo(){
        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        fileUri = getOutputFileUri(MEDIA_TYPE_VIDEO);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);
        startActivityForResult(intent,RECORD_VIDEO_REQUEST);
    }


    /**
     *
     * 当Activity销毁的时候,保存数据
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("fileUri",fileUri);


    }

    /**
     *
     * 当Activity重建的时候,恢复数据
     */
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        fileUri = savedInstanceState.getParcelable("fileUrl");
    }


    /**
     *
     * 拍照请求返回结果
     */
    @OnActivityResult(CAPTURE_IMAGE_REQUEST)
    void onCaptureImageResult(int resultCode){
        if(resultCode == RESULT_OK){
            Intent intent = new Intent(MainActivity.this,UploadActivity_.class);
            intent.putExtra("filePath",fileUri.getPath());
            intent.putExtra("isImage",true);
            startActivity(intent);
        }else if(resultCode == RESULT_CANCELED){
            Toast.makeText(getApplicationContext(),"用户取消拍照",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(),"拍照失败",Toast.LENGTH_SHORT).show();
        }
    }

    /**
     *
     * 录像请求返回结果
     */
    @OnActivityResult(RECORD_VIDEO_REQUEST)
    void onRecordVideoResult(int resultCode){
        if(resultCode == RESULT_OK){
            Intent intent = new Intent(MainActivity.this,UploadActivity_.class);
            intent.putExtra("filePath",fileUri.getPath());
            intent.putExtra("isImage",false);
            startActivity(intent);
        }else if(resultCode == RESULT_CANCELED){
            Toast.makeText(getApplicationContext(),"用户取消录像",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(),"录像失败",Toast.LENGTH_SHORT).show();
        }
    }


    @UiThread
    private Uri getOutputFileUri(int mediaType){
        File fileDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"dir");
        if(!fileDir.exists()){
            if(!fileDir.mkdirs()){
                Log.d("Message","Create Directory failed");
                return null;
            }
        }

        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
        File filePath;
        if(mediaType == MEDIA_TYPE_IMAGE){
            filePath = new File(fileDir.getPath()+File.separator+"IMG_"+timeStamp+".jpg");
        }else if(mediaType == MEDIA_TYPE_VIDEO){
            filePath = new File(fileDir.getPath()+File.separator+"VID_"+timeStamp+".mp4");
        }else {
            return null;
        }

        return Uri.fromFile(filePath);

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值