Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片

Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片,第1张

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路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9540422.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存