Android實戰簡易教程-第二十九槍(基於Face++實現年齡識別APP(一))


我們通過Face++提供的api和服務實現HowOld App的開發,首先我們實現圖片的選擇功能。

1.main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/btn_getImage"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Get image"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp" />

<Button
android:id="@+id/btn_detect"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Detect"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/btn_getImage" />

<TextView
android:id="@+id/tv_tip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginRight="10dp"
android:text="tip"
android:paddingLeft="10dp"
android:gravity="center"
android:layout_alignTop="@+id/btn_detect"

/>

<ImageView
android:layout_above="@+id/btn_detect"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/t4"
android:id="@+id/iv_photo" />

<FrameLayout
android:id="@+id/id_waitting"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:visibility="gone"
android:clickable="true">

<ProgressBar
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center" />

</FrameLayout>

</RelativeLayout>

2.MainActivity.java:

package com.yayun.howold;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends ActionBarActivity implements View.OnClickListener {    private static final int PICK_CODE = 0x110;//隨便設置一個常量    private ImageView mPhoto;    private Button mGetImage, mDetect;    private TextView mTip;    private View mWaitting;    private String mCurrentPhotoStr;    private Bitmap mPhotoImg;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initViews();//初始化控件        initEvents();//點擊事件    }    private void initEvents() {        mGetImage.setOnClickListener(this);        mDetect.setOnClickListener(this);    }    private void initViews() {        mPhoto = (ImageView) findViewById(R.id.iv_photo);        mGetImage = (Button) findViewById(R.id.btn_getImage);        mDetect = (Button) findViewById(R.id.btn_detect);        mTip = (TextView) findViewById(R.id.tv_tip);        mWaitting = (View) findViewById(R.id.id_waitting);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {//返回結果判斷        if (requestCode == PICK_CODE) {            if (intent != null) {                Uri uri = intent.getData();//獲取uri                //下面是為了獲取圖片的路徑                Cursor cursor = getContentResolver().query(uri, null, null, null, null);                cursor.moveToFirst();                int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);//獲取索引                mCurrentPhotoStr = cursor.getString(idx);//拿到圖片的路徑,當然我以前的文章也有介紹怎么由uri獲取string型的地址                resizePhoto();//壓縮圖片                mPhoto.setImageBitmap(mPhotoImg);//設置壓縮后圖片                mTip.setText("Click Detect==>");            }        }        super.onActivityResult(requestCode, resultCode, intent);    }    /**     * 壓縮圖片     */    private void resizePhoto() {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inJustDecodeBounds = true;//不會加載圖片,只會獲取圖片的寬高        BitmapFactory.decodeFile(mCurrentPhotoStr, options);//options里已存取寬高        double ratio = Math.max(options.outWidth * 1.0d / 1024f, options.outHeight * 1.0d / 1024f);//寬高盡可能小於1024,最終每個圖片不能超過3M        options.inSampleSize = (int) Math.ceil(ratio);        options.inJustDecodeBounds = false;//否則不會加載圖片        mPhotoImg = BitmapFactory.decodeFile(mCurrentPhotoStr, options);//壓縮后的BitMap    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_getImage:                Intent intent = new Intent(Intent.ACTION_PICK);//選擇                intent.setType("image/*");//圖片格式                startActivityForResult(intent, PICK_CODE);                break;            case R.id.btn_detect:                break;        }    }}
運行實例:

選擇圖片:

成功選擇圖片!

喜歡的朋友請關注我!謝謝


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com