当前位置:  编程技术>移动开发
本页文章导读:
    ▪关于CGRect包孕交错,边缘,中心的检测        关于CGRect包含交错,边缘,中心的检测 判断给定的点是否被一个CGRect包含,可以用CGRectContainsPoint函数   BOOL contains = CGRectContainsPoint(CGRect rect, CGPoint point); 判断一个CGRect是否包含再另一个CGRe.........
    ▪ 在mac停编写ffmpeg项目        在mac下编写ffmpeg项目 1.建立工程TestFFmpeg2.编写c文件mian.c#include <stdio.h> #include <libavcodec/avcodec.h> int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); print.........
    ▪ 【2013.7.15】自定义SurfaceView、自定义照相机       【2013.7.15】自定义SurfaceView、自定义相机 1.自定义SurfaceView SurfaceView是一个跟TextView、ImageView同等的控件,我们可以自定义TextView等,当然也可以自定义SurfaceView。在引用的时候,只需写出自定.........

[1]关于CGRect包孕交错,边缘,中心的检测
    来源: 互联网  发布时间: 2014-02-18
关于CGRect包含交错,边缘,中心的检测

判断给定的点是否被一个CGRect包含,可以用CGRectContainsPoint函数

 

BOOL contains = CGRectContainsPoint(CGRect rect, CGPoint point);

判断一个CGRect是否包含再另一个CGRect里面,常用与测试给定的对象之间是否又重叠

 

BOOL contains = CGRectContainsRect(CGRect rect1, CGRect rect2);

判断两个结构体是否有交错.可以用CGRectIntersectsRect

 

BOOL contains = CGRectIntersectsRect(CGRect rect1, CGRect rect2);

 

 

float float_ = CGRectGetMaxX(CGRect rect);返回矩形右边缘的坐标

 

CGRectGetMaxY返回矩形顶部的坐标

 

CGRectGetMidX返回矩形中心X的坐标

 

CGRectGetMidY返回矩形中心Y的坐标

 

CGRectGetMinX返回矩形左边缘的坐标

 

CGRectGetMinY返回矩形底部的坐标


    
[2] 在mac停编写ffmpeg项目
    来源: 互联网  发布时间: 2014-02-18
在mac下编写ffmpeg项目
1.建立工程TestFFmpeg

2.编写c文件
mian.c
#include <stdio.h>
#include <libavcodec/avcodec.h> 

int main(int argc, const char * argv[])
{
    // insert code here...
    printf("Hello, World!\n");
    printf("%d",avcodec_version());
    return 0;
}

3. 添加lib文件:右键点击工程名,选择“Add files to..”,在文件选择对话框弹出来时输入“/”,在弹出的路径框中输入:/usr/local/lib,全选该文件夹下的全部dylib文件,添加至工程。
5. 添加lib文件查找支持: 点击工程名文件,进入“Build Settings”选项卡,在“Library Search Paths”栏中输入“/usr/local/lib”
6. 添加头文件:点击工程名文件,进入“Build Settings”选项卡,在“Header Search Paths”栏中输入:“/usr/local/include”
7. 编译运行整个工程,运行成功~~

[img]

[/img]


    
[3] 【2013.7.15】自定义SurfaceView、自定义照相机
    来源: 互联网  发布时间: 2014-02-18
【2013.7.15】自定义SurfaceView、自定义相机

1.自定义SurfaceView

SurfaceView是一个跟TextView、ImageView同等的控件,我们可以自定义TextView等,当然也可以自定义SurfaceView。在引用的时候,只需写出自定义SurfaceView的全类名即可。

新建CameraView类,继承自SurfaceView

 

public class CameraView extends SurfaceView implements
		android.view.SurfaceHolder.Callback {

	Camera camera;
	SurfaceHolder holder;
	Parameters para;

	/**
	 * @描述 官方文档说raw是未经压缩的图像数据,尝试着去写,但是未能成功
	 * 小提示 (NOTE: the data will be null if there
	 *     is no raw image callback buffer available or the raw image callback
	 *     buffer is not large enough to hold the raw image)
	 * */
	PictureCallback rawCallback = new PictureCallback() {

		@Override
		public void onPictureTaken(byte[] data, Camera camera) {
			camera.stopPreview();
			savePhoto(data);
			camera.startPreview();

		}
			//这样的写入照片是错误的,无法载入图片
		private void savePhoto(byte[] data) {

			String dirPath = Environment.getExternalStorageDirectory()
					.getAbsolutePath() + "/AAcamera/";
			File dirFile = new File(dirPath);
			if (!dirFile.exists()) {
				dirFile.mkdirs();
			}
			String fileName = String.valueOf(System.currentTimeMillis())
					+ ".jpeg";
			System.out.println(dirPath);
			File file = new File(dirPath + fileName);
			FileOutputStream fos;

			if (!file.exists()) {
				try {
					file.createNewFile();
					FileInputStream fis = new FileInputStream(new String(data));
					
					fos = new FileOutputStream(file);
					int len = -1;
					while((len = fis.read())!= -1){
						fos.write(data, 0, len);
					}

					fis.close();
					fos.flush();
					fos.close();

				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}
	};
/**
 * 
 * @描述  jpeg  callback  在此保存jpeg格式的图片
 * */
	PictureCallback jpegCallback = new PictureCallback() {

		@Override
		public void onPictureTaken(byte[] data, Camera camera) {

			camera.stopPreview();
			savePhoto(data);
			camera.startPreview();

		}

		private void savePhoto(byte[] data) {
			Bitmap bm = null;
			if (data != null) {
				bm = BitmapFactory.decodeByteArray(data, 0, data.length);

				String dirPath = Environment.getExternalStorageDirectory()
						.getAbsolutePath() + "/AAcamera/";
				File dirFile = new File(dirPath);
				if (!dirFile.exists()) {
					dirFile.mkdirs();
				}
				String fileName = String.valueOf(System.currentTimeMillis())
						+ ".jpeg";
				System.out.println(dirPath);
				File file = new File(dirPath + fileName);
				FileOutputStream fos;
				if (!file.exists()) {
					try {
						file.createNewFile();
						fos = new FileOutputStream(file);

						bm.compress(CompressFormat.JPEG, 100, fos);
						fos.flush();
						fos.close();

					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}

		}
	};

	public CameraView(Context context) {
		super(context);
	}

	public CameraView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public CameraView(Context context, AttributeSet attrs) {
		super(context, attrs);
		holder = this.getHolder();
//		holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//已经废除,去掉不会报错
		holder.addCallback(this);
	}

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {
		//这几个参数设置并未看到效果
/*		para = camera.getParameters();
		para.setPictureSize(1024, 768);
		para.setPictureFormat(PixelFormat.JPEG);
		para.setFlashMode(Parameters.FLASH_MODE_ON);
		para.setPreviewSize(1024, 768);*/
		camera.startPreview();
	}

	public void takePhoto() {

		camera.takePicture(null, null, null, jpegCallback);
//		camera.takePicture(null, null, raw, null);

	}

	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		try {
			camera = Camera.open(0);//如果有多个摄像头,这里可以设置成不同的摄像头
			camera.setPreviewDisplay(holder);

		} catch (IOException e) {
			e.printStackTrace();
			camera.release();
			camera = null;
		}

	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		camera.release();

	}

}

 

 

 

在布局文件中去使用

 <com.saya.mycamera.CameraView
        android:id="@+id/cv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.58" />

 

今天很长一段时间,我这样使用都报错,说我包含这个控件的xml有问题,原来我在CameraView中只写了

	public CameraView(Context context) {
		super(context);
	}

 这个构造方法,把这个带属性的构造方法加上就可以使用了。

	public CameraView(Context context, AttributeSet attrs) {
		super(context, attrs);
		holder = this.getHolder();
//		holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//已经废除,去掉不会报错
		holder.addCallback(this);
	}

 

 

在Activity中去使用

public class CameraActivity extends Activity implements OnClickListener {

	private CameraView cv;
	private Button takePhoto;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_camera);
		cv = (CameraView) findViewById(R.id.cv);
		takePhoto = (Button) findViewById(R.id.takePhoto);
		takePhoto.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {

		cv.takePhoto();

	}

}

 

 

存储原始文件,以及照片的设置还没有成功,明天继续。

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3