axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/btn0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="从相册中选择照片"
/>
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="拍照"
/>
<ImageView
android:id="@+id/imageID"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

C#

using System;

using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
using Android.Graphics;
using System.IO; namespace Phoot
{
[Activity(Label = "Phoot", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
public static int NONE = 0;
public static int PHOTOHRAPH = 1;//拍照
public static int PHOTOXZOOM = 2;//缩放
public static int PHOTORESOULT = 3;//结果 public static string IMAGE_UNSPECTFIED = "image/*"; ImageView imageview = null;
Button button0 = null;
Button button1 = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle); // Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main); button0 = FindViewById<Button>(Resource.Id.btn0);
button1 = FindViewById<Button>(Resource.Id.btn1);
imageview = FindViewById<ImageView>(Resource.Id.imageID);
button0.Click += new EventHandler(button0_Click);
button1.Click += new EventHandler(button1_Click); }
//选择照片
void button0_Click(object sender, EventArgs e)
{
Intent intent = new Intent(Intent.ActionPick, null);
//选择照片意图
intent.SetDataAndType(
Android.Provider.MediaStore.Images.Media.ExternalContentUri, IMAGE_UNSPECTFIED);
StartActivityForResult(intent, PHOTOXZOOM);
} //拍照
void button1_Click(object sender, EventArgs e)
{ Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
string file = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(),Android.OS.Environment.DirectoryDcim.ToString()+ "/test.jpg"); var outputFileUri = Android.Net.Uri.Parse(file);
intent.PutExtra(Android.Provider.MediaStore.ExtraOutput,file);
StartActivityForResult(intent, PHOTOHRAPH); } protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (requestCode == NONE)
{
return;
}
if (requestCode == PHOTOHRAPH)
{
//获取照片
Bitmap bitmap = (Bitmap)data.Extras.Get("data");
Java.IO.File picture = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.ToString()+"/"+Android.OS.Environment.DirectoryDcim.ToString() + "/test.jpg"); //Java.IO.FileOutputStream b = new Java.IO.FileOutputStream(picture);
FileStream MyFileStream1 = new FileStream(picture.ToString(), FileMode.Create);
//保存照片
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, MyFileStream1); if (System.IO.File.Exists(picture.ToString()))
{
startPhotoZoom(Android.Net.Uri.FromFile(picture));
} //startPhotoZoom
}
if (data == null)
{
return;
}
if (requestCode == PHOTOXZOOM)
{
startPhotoZoom(data.Data);
}
//处理结果
if (requestCode == PHOTORESOULT)
{
Bundle extras = data.Extras;
if (extras != null)
{
Bitmap photo = (Bitmap)extras.GetParcelable("data"); //Stream stream = null;
//压缩文件
//photo.Compress(Bitmap.CompressFormat.Jpeg, 75, stream); imageview.SetImageBitmap(photo);
}
} base.OnActivityResult(requestCode, resultCode, data);
} //缩放
public void startPhotoZoom(Android.Net.Uri uri)
{ Intent intent = new Intent("com.android.camera.action.CROP");
intent.SetDataAndType(uri, IMAGE_UNSPECTFIED); intent.PutExtra("crop", true);
//// aspectX aspectY 是宽高的比例
intent.PutExtra("aspectX", 1);
intent.PutExtra("aspectY", 1);
//// outputX outputY 是裁剪图片宽?
intent.PutExtra("outputX", 100);
intent.PutExtra("outputY", 100);
intent.PutExtra("return-data", true);
StartActivityForResult(intent, PHOTORESOULT); } }
}

以前的我是没有做笔记的习惯的,学习了后觉得自己能记住,但是最近发现很多学的东西都忘记了,所有现在一有新的知识,就记下来吧。

最近又做一个mono for android 的项目 这次调整比较大,上次做的点餐系统很好用 ,但是做的时候没有做笔记很多东西都忘记了,这次我把项目涉及到的知识传到博客上,方便记忆,也很大家分享分享的,希望大家能给出点意见。——小査

mono for android 获取手机照片或拍照并裁剪保存的更多相关文章

  1. 如何兼容所有Android版本选择照片或拍照然后裁剪图片--基于FileProvider和动态权限的实现

    我们知道, Android操作系统一直在进化. 虽然说系统是越来越安全, 可靠, 但是对于开发者而言, 开发难度是越来越大的, 需要注意的兼容性问题, 也越来越多. 就比如在Android平台上拍照或 ...

  2. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  3. android API版本对应的系统版本及Android获取手机和系统版本等信息的代码

    学了这么久的Android,竟然一直对其API对应的名称关系一值搞不清楚,现在网上认真看了下资料,转载一个觉得写得不错的作者的文章,记下来: [背景] 之前折腾android期间,慢慢地知道了,And ...

  4. Android 获取手机的厂商、型号、Android系统版本号等工具类(转载)

    Android 获取手机的厂商.型号.Android系统版本号等工具类 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串 ...

  5. Android 获取手机Mac地址,手机名称

    /** * 获取手机mac地址<br/> * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取 ...

  6. android获取手机信息大全

    IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...

  7. Android获取手机制作商,系统版本等

    在开发中 我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息. android.os.Build类中.包括了这样的一些信息.我们可以直接调用 而不需要添加任何的权限和 ...

  8. Android获取手机设备识别码(IMEI)和手机号码

    最近看了下获取手机设备ID和手机信息以及SIM的信息例子,主要还是借鉴别人的,现在自己写一下,算是巩固加深了,也希望能给大家一个参考 必要的条件还是一部真机,SIM卡或者UIM卡. 首先,在Andro ...

  9. android获取手机信息2

    IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...

随机推荐

  1. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

  2. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  3. StringUtils的isBlank与isEmply

    1.public static boolean isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0 StringUtil ...

  4. [Android]使用Dagger 2来构建UserScope(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6237731.html 使用Dagger 2来构建UserSco ...

  5. Atitit.如何建立研发体系

    Atitit.如何建立研发体系 组织,流程,prj..Mana  oppm 发管理是一个完整的管理体系,从结构上来讲,它主要由四个方面的内容构架而成:组织结构与岗位设置 管理流程与工作流程..项目及管 ...

  6. phpstorm 配置 xdebug调试工具

    前言   php是脚本型程序 每次出错都要手动exit断点程序不是很方便 哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试.下面将我个人的安装经历分享给大家. 运行环境 windows ...

  7. 实现php连接memcached

    准备工作: 实现lnmp环境 给php添加模块,so库 下载扩展包:memcache-2.2.5.tgz wget http://pecl.php.net/get/memcache-2.2.5.tgz

  8. angularJS(6)

    angularJS(6) 一:angularJs的事件. 1.ng-click指令定义了AngularJS点击事件. <div ng-app="myapp" ng-contr ...

  9. 我的MYSQL学习心得(十一) 视图

    我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  10. C#移动跨平台开发(2)Xamarin移动跨平台解决方案是如何工作的?

    概述 上一篇 C#移动跨平台开发(1)环境准备发布之后不久,无独有偶,微软宣布了开放.NET框架源代码并且会为Windows.Mac和Linux开发一个核心运行时(Core CLR),这也是开源的!I ...