问题

以下是一段简单的代码,它调用系统的相机app来拍摄照片:

void takePhoto(String cameraPhotoPath) {
    File cameraPhoto = new File(cameraPhotoPath);
    Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraPhoto));
    startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);
}

在一般情况下,运行没有任何问题;可是当把targetSdkVersion指定成24及之上并且在API>=24的设备上运行时,会抛出异常:

android.os.FileUriExposedException: 		file:///storage/emulated/0/DCIM/IMG_20170125_144112.jpg exposed beyond app through ClipData.Item.getUri()
    at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
    at android.net.Uri.checkFileUriExposed(Uri.java:2346)
    at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:8909)
    ...

详情...


效果图

先上效果图

WaveView截图


实现

WaveView的属性

WaveView的属性

Wate Level(水位)
波浪静止时水面距离底部的高度
Amplitude(振幅)
波浪垂直振动时偏离水面的最大距离
Wave Length(波长)
一个完整的波浪的水平长度
Wave Shift(偏移)
波浪相对于初始位置的水平偏移

详情...