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. Asp.net Boilerplate之AbpSession扩展

    当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...

  2. 隐私泄露杀手锏 —— Flash 权限反射

    [简版:http://weibo.com/p/1001603881940380956046] 前言 一直以为该风险早已被重视,但最近无意中发现,仍有不少网站存在该缺陷,其中不乏一些常用的邮箱.社交网站 ...

  3. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  4. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

  5. Redis/HBase/Tair比较

    KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...

  6. 从备考PMP到与项目经理同呼吸

    前言 PMP是什么梗? 项目管理专业人士资格认证.它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证 ...

  7. Java 输出流中的flush方法

    转自:http://blog.csdn.net/jiyangsb/article/details/50984440 java中的IO流中的输出流一般都有flush这个操作,这个操作的作用是强制将缓存中 ...

  8. Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用

    通过本文你将学会如下内容: 1,如何使用Xamarin开发跨平台(Windows,Android,iOS)应用. 2,如何使用微软的登录界面登入Microsoft账号. 3,如何使用Outlook邮箱 ...

  9. 小程序用户反馈 - HotApp小程序统计仿微信聊天用户反馈组件,开源

    用户反馈是小程序开发必要的一个功能,但是和自己核心业务没关系,主要是产品运营方便收集用户的对产品的反馈.HotApp推出了用户反馈的组件,方便大家直接集成使用 源码下载地址: https://gith ...

  10. React Native 之 Text的使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...