C# 安卓摄像头应用程序没有';不归
我试图用xamarin在imageview中显示图像,但当我按下相机中的“接受”按钮时,它不会返回到我的主要活动 这是密码C# 安卓摄像头应用程序没有';不归,c#,android,xamarin,C#,Android,Xamarin,我试图用xamarin在imageview中显示图像,但当我按下相机中的“接受”按钮时,它不会返回到我的主要活动 这是密码 protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.AddPurchase); // Create your application here ConfigLayout ();
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.AddPurchase);
// Create your application here
ConfigLayout ();
if (IsThereAnAppToTakePictures ())
{
CreateDirectoryForPictures ();
Button cameraButton = FindViewById<Button> (Resource.Id.buttonTakePicture);
_imageView = FindViewById<ImageView> (Resource.Id.imageView);
cameraButton.Click += TakeAPicture;
}
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
Intent mediaScanIntent = new Intent (Intent.ActionMediaScannerScanFile);
var contentUri = Uri.FromFile (_file);
mediaScanIntent.SetData (contentUri);
SendBroadcast (mediaScanIntent);
int height = _imageView.Height;
int width = _imageView.Width;
using (Bitmap bitmap = _file.Path.LoadAndResizeBitmap(width, height)) {
_imageView.SetImageBitmap (bitmap);
}
}
bool IsThereAnAppToTakePictures ()
{
Intent intent = new Intent (MediaStore.ActionImageCapture);
IList<ResolveInfo> availableActivities = PackageManager.QueryIntentActivities (intent, PackageInfoFlags.MatchDefaultOnly);
return availableActivities != null && availableActivities.Count > 0;
}
void CreateDirectoryForPictures ()
{
_dir = new File (Environment.GetExternalStoragePublicDirectory (Environment.DirectoryPictures), "Boekhoudservice");
if(!_dir.Exists ())
_dir.Mkdirs();
}
private void TakeAPicture(object sender, System.EventArgs eventArgs)
{
if (_imageView.Drawable != null) {
_imageView.SetImageResource (0);
}
Intent intent = new Intent (MediaStore.ActionImageCapture);
_file = new Java.IO.File(_dir, String.Format ("uitgave_{0}.jpg", System.DateTime.Now.ToString ("d")));
intent.PutExtra (MediaStore.ExtraOutput, Uri.FromFile(_file));
StartActivityForResult (intent, RequestCodeConstants.CameraIntent);
}
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.AddPurchase);
//在此处创建应用程序
ConfigLayout();
如果(是否在此处拍摄照片())
{
CreateDirectoryForPictures();
按钮cameraButton=FindViewById(Resource.Id.buttonTakePicture);
_imageView=findviewbyd(Resource.Id.imageView);
cameraButton.Click+=TakeAPicture;
}
}
受保护的覆盖void OnActivityResult(int请求代码、结果代码、意图数据)
{
base.OnActivityResult(请求代码、结果代码、数据);
Intent mediaScanIntent=新的Intent(Intent.ActionMediaScannerScanFile);
var contentUri=Uri.FromFile(_文件);
mediaScanIntent.SetData(contentUri);
SendBroadcast(mediaScanIntent);
int height=_imageView.height;
int width=_imageView.width;
使用(位图位图=_file.Path.LoadAndResizeBitmap(宽度、高度)){
_imageView.SetImageBitmap(位图);
}
}
bool Istherea拍摄照片()
{
意向意向=新意向(MediaStore.ActionImageCapture);
IList availableActivities=PackageManager.QueryInputActivities(intent,PackageInfoFlags.MatchDefaultOnly);
return availableActivities!=null&&availableActivities.Count>0;
}
作废CreateDirectoryForPictures()
{
_dir=新文件(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryPictures),“Boekhoudservice”);
如果(!\u dir.Exists())
_dir.Mkdirs();
}
私有void TakeAPicture(对象发送方,System.EventArgs EventArgs)
{
如果(_imageView.Drawable!=null){
_imageView.SetImageResource(0);
}
意向意向=新意向(MediaStore.ActionImageCapture);
_file=new Java.IO.file(_dir,String.Format(“uit_{0}.jpg”,System.DateTime.Now.ToString(“d”));
intent.PutExtra(MediaStore.ExtraOutput,Uri.FromFile(_file));
StartActivityForResult(intent、RequestCodeConstants.CameraIntent);
}
问题似乎在于我的目录创建方法,在检查目录是否存在时,它返回true,而如果我自己检查,它不会显示在我的文件资源管理器中
这两个权限都在我的AndroidManifest中
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您也可以从Manifest.xml中添加活动声明吗?因为我正在使用Xamarin执行此操作,所以我的清单中没有任何活动声明,所有活动都使用类名上方的[activity(Label=“ActivityName”)]
属性注册