
Activity之间传递数据是通过Intent来传递的。
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。
Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的,不同类型的组件有不同的传递Intent方式:
要激活一个新的Activity,或者让一个现有的Activity做新的 *** 作,可以通过调用ContextstartActivity()或者ActivitystartActivityForResult()方法。
要启动一个新的Service,或者向一个已有的Service传递新的指令,调用ContextstartService()方法或者调用ContextbindService()方法将调用此方法的上下文对象与Service绑定。
ContextsendBroadcast()、ContextsendOrderBroadcast()、ContextsendStickBroadcast()这三个方法可以发送Broadcast Intent。发送之后,所有已注册的并且拥有与之相匹配IntentFilter的BroadcastReceiver就会被激活。
Intent一旦发出,Android都会准确找到相匹配的一个或多个Activity,Service或者BroadcastReceiver作响应。所以,不同类型的Intent消息不会出现重叠,即Broadcast的Intent消息只会发送给BroadcastReceiver,而决不会发送给Activity或者Service。由startActivity()传递的消息也只会发给Activity,由startService()传递的Intent只会发送给Service。
使用照相机的方法:
//在监听事件中加入如下代码
Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(EnvironmentgetExternalStorageDirectory()+"/","tempjpg")));
startActivityForResult(intent, reqCode_CAMERA);// reqCode_CAMERA是一个一自己设定的值,用于在onActivityResult方法中判断是哪一个activity返回的
再重写onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
superonActivityResult(requestCode, resultCode, data);
if(requestCode == reqCode_CAMERA && resultCode== RESULT_OK){
////这里是直接隐式启动系统预览程序
// Intent intent = new Intent();
// intentsetAction(IntentACTION_VIEW);
//// uri指向用户选择的那个
// Uri uri = datagetData();
// intentsetData(uril);
// startActivity(intent);
// Uri uri = datagetData();
// Cursor cursor = getContentResolver()query(uri, null, null, null, null);
// if(cursor!=null&&cursormoveToFirst()){
// String path = cursorgetString(1);
// Bitmap bm = BitmapFactorydecodeFile(path);
// ivsetImageBitmap(bm);
// }
// ivsetImageURI(uri);
//也可以用这里代码打开裁剪
Intent intent = new Intent();
intentsetAction("comandroidcameraactionCROP");
intentsetType("image/");
intentputExtra("data", datagetExtras()getParcelable("data"));
intentputExtra("crop", "true");
intentputExtra("aspectX", 1);//默认剪裁起始位置x值
intentputExtra("aspectY", 1);//默认剪裁起始位置y值
intentputExtra("outputX", 128);//默认剪裁终止位置x值
intentputExtra("outputY", 128);//默认剪裁终止位置x值
intentputExtra("return-data", true);
startActivityForResult(intent, reqCode_Zoom);
}//这里是处理剪裁返回后的处理,直接调用ImageView显示了,你可以根据你的需要修改
else if(requestCode==reqCode_Zoom){
Bitmap bitmap = datagetExtras()getParcelable("data");
ivsetImageBitmap(bitmap);
}
上传本地方法:
按钮名setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 隐式启动系统相册程序
Intent intent = new Intent();
intentsetAction(IntentACTION_PICK);
intentsetDataAndType(MediaEXTERNAL_CONTENT_URI, "image/");
startActivityForResult(intent, reqCode_PICK);// reqCode和上面一样自己定义,但是不要重复了
}
});
再在onActivityResult方法添加一个"elseif(requestCode == reqCode_PICK && resultCode== RESULT_OK)"条件,方法体直接参考上面,就是在剪裁那里把“intentputExtra("data", datagetExtras()getParcelable("data"));”换为“intentsetDataAndType(datagetData(), "image/");”就可以了。
串口 应该是 tty 吧
比如 下面是 usb转串口的情况
首先,将我的mini2440开发板通过USB转232串口线与PC机连接,这时候咱们的linux系统自动安转了驱动程序,可以使用命令:dmesg 来查看安装驱动的信息,如下图
从上图可以看出咱们的串口设备是0,
你也可以使用命令: ls -l /dev/ttyUSB来查看相关的信息,如下图
至此,我们已经顺利的将串口连接到Ubuntu系统上了,也查看到自己开发板连接的是USB转串口设备/dev/ttyUSB0,如果是普通的串口设备会是/dev/ttyS
以上就是关于Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片全部的内容,包括:Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片、请android高手帮忙!、ubuntu 下如何获取USB接口相机的uri路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)