public bool OnLongClick(View v) { var item = new ClipData.Item(v.Tag.JavaCast <Java.Lang.String>()); var mimeTypes = new String[1]; ClipData data = null; if (v is ImageView) { // image item only drags WITHIN THE APP mimeTypes[0] = "image/jpeg"; data = new ClipData(v.Tag.JavaCast <Java.Lang.String>().ToString(), mimeTypes, item); // TODO: allow image to drag to other apps } else if (v is TextView) { // use plain text, can drag outside the app data = ClipData.NewPlainText( new Java.Lang.String(v.Tag.ToString()), new Java.Lang.String((v as TextView).Text) ); } var dragShadowBuilder = new View.DragShadowBuilder(v); // flags required to drag to other apps v.StartDragAndDrop(data, dragShadowBuilder, v, (int)ADragFlags.Global | (int)ADragFlags.GlobalUriRead | (int)ADragFlags.GlobalUriWrite); return(true); }
public static IMimeItem Parse(ClipData.Item item) { if (item.Uri != null && new AndroidUriMimeItem(item.Uri) is IMimeItem result && result.MimeType != null) { var mimeType = result.MimeType; var value = result.Value; return(result); } if (item.HtmlText != null) { return(new AndroidHtmlMimeItem(item.HtmlText)); } if (item.TextFormatted != null && item.CoerceToHtmlText(Forms9Patch.Droid.Settings.Context) is string html) { return(new AndroidHtmlMimeItem(html)); } if (item.Text != null) { return(new AndroidTextMimeItem(item.Text)); } if (item.Intent != null) { return(new AndroidIntentMimeItem(item.Intent)); } return(null); }
private void UpdateDisplay() { bool pasteEnable = false; ClipboardManager clipboardManagerNew = _clipboardManager as ClipboardManager; if (clipboardManagerNew != null) { if (clipboardManagerNew.HasPrimaryClip) { string clipText = string.Empty; ClipData.Item item = clipboardManagerNew.PrimaryClip.GetItemAt(0); if (item != null) { clipText = clipboardManagerNew.PrimaryClipDescription.HasMimeType(ClipDescription.MimetypeTextPlain) ? item.Text : item.CoerceToText(this); } if (!string.IsNullOrWhiteSpace(clipText)) { pasteEnable = true; } } } else { #pragma warning disable 618 Android.Text.ClipboardManager clipboardManagerOld = _clipboardManager as Android.Text.ClipboardManager; #pragma warning restore 618 if (!string.IsNullOrWhiteSpace(clipboardManagerOld?.Text)) { pasteEnable = true; } } _buttonYandexApiKeyPaste.Enabled = pasteEnable; _buttonYandexApiKeyTest.Enabled = !string.IsNullOrWhiteSpace(_editTextYandexApiKey.Text); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); SetContentView(Resource.Layout.activity_main); var btnCopy = FindViewById <Button>(Resource.Id.btn_copy); var btnPaste = FindViewById <Button>(Resource.Id.btn_paste); var txtCopy = FindViewById <EditText>(Resource.Id.txt_copy); var txtPaste = FindViewById <TextView> (Resource.Id.txt_paste); clipboardManager = (ClipboardManager)GetSystemService(ClipboardService); btnCopy.Click += delegate { var copyText = txtCopy.Text; clipData = ClipData.NewPlainText("text", copyText); clipboardManager.PrimaryClip = clipData; Toast.MakeText(this, Resource.String.msg_copy_text, ToastLength.Short).Show(); }; btnPaste.Click += delegate { ClipData.Item item = clipboardManager.PrimaryClip.GetItemAt(0); txtPaste.Text = item.Text; Toast.MakeText(this, Resource.String.msg_paste_text, ToastLength.Short).Show(); }; }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (requestCode == VOICE) { if (resultCode == Result.Ok) { var matches = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults); if (matches.Count != 0) { string textInput = matches[0]; MessagingCenter.Send <IMessageSender, string>(this, "STT", textInput); } else { MessagingCenter.Send <IMessageSender, string>(this, "STT", "No input"); } } } base.OnActivityResult(requestCode, resultCode, data); //If we are calling multiple image selection, enter into here and return photos and their filepaths. if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <string> images = new List <string>(); if (data != null) { //Separate all photos and get the path from them all individually. ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } } else { Android.Net.Uri uri = data.Data; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } //Send our images to the carousel view. MessagingCenter.Send <App, List <string> >((App)Xamarin.Forms.Application.Current, "ImagesSelectedAndroid", images); } } }
protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); InAppBillingImplementation.HandleActivityResult(requestCode, resultCode, data); if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <byte[]> images = new List <byte[]>(); if (data != null) { ClipData clipData = data.ClipData; // if clipData exists, it means there are more than 1 image if (clipData != null) { // we need to send this message so the view can show loading MessagingCenter.Send <object>(this, MessagingKeys.ShowLoadingIndicator); for (int i = 0; i < clipData.ItemCount; i++) { if (i > 5) { break; } // limit to 5 images try { ClipData.Item item = clipData.GetItemAt(i); var uri = item.Uri; await Task.Run(() => { images.Add(PhotoUtilHelper.UpdateAndConvertURI(this, uri)); }); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } else { try { MessagingCenter.Send <object>(this, MessagingKeys.ShowLoadingIndicator); var uri = data.Data; await Task.Run(() => { images.Add(PhotoUtilHelper.UpdateAndConvertURI(this, uri)); }); } catch (Exception ex) { Console.WriteLine(ex.Message); } } // post the message with the list attached MessagingCenter.Send <object, object>(this, MessagingKeys.DidFinishSelectingImages, images); } } }
public async Task OnActivityResult(int requestCode, Result resultCode, Intent data) { var mediaPicked = new ObservableCollection <MediaFile>(); var tasks = new List <Task>(); if (requestCode == MultiPickerResultCode) { if (resultCode == Result.Ok) { if (data != null) { ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; tasks.Add(Task.Run( () => { var media = CreateMediaFileFromUri(uri); if (media != null) { lock (Obj) { mediaPicked.Add(media); } OnMediaPicked?.Invoke(this, media); } })); } } else { Android.Net.Uri uri = data.Data; var media = CreateMediaFileFromUri(uri); if (media != null) { mediaPicked.Add(media); OnMediaPicked?.Invoke(this, media); } } } } await Task.WhenAll(tasks); OnMediaPickedCompleted?.Invoke(this, mediaPicked); _mediaPickedTcs?.TrySetResult(mediaPicked); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); //NuGet Initializations CarouselViewRenderer.Init(); FFImageLoading.Forms.Platform.CachedImageRenderer.Init(enableFastRenderer: false); //If we are calling multiple image selection, enter into here and return photos and their filepaths. if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <string> images = new List <string>(); if (data != null) { //Separate all photos and get the path from them all individually. ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } } else { Android.Net.Uri uri = data.Data; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } //Send our images to the carousel view. MessagingCenter.Send <App, List <string> >((App)Xamarin.Forms.Application.Current, "ImagesSelectedAndroid", images); items = new ObservableCollection <App>(); } } }
public void OnActivityResult(int requestCode, Result resultCode, Intent data) { ObservableCollection <MediaModel> oCollection = null; if (requestCode == SOURCE_PICK_CODE) { if (resultCode == Result.Ok) { oCollection = new ObservableCollection <MediaModel>(); if (data != null) { ClipData oData = data.ClipData; if (oData != null) { for (int i = 0; i < oData.ItemCount; i++) { ClipData.Item oItem = oData.GetItemAt(i); Android.Net.Uri oUri = oItem.Uri; var oModel = CreateMediaModel(oUri); if (oModel != null) { oCollection.Add(oModel); OnMediaPicked?.Invoke(this, oModel); } } } else { Android.Net.Uri oUri = data.Data; var oModel = CreateMediaModel(oUri); if (oModel != null) { oCollection.Add(oModel); OnMediaPicked?.Invoke(this, oModel); } } OnMediaPickedCompleted?.Invoke(this, oCollection); } } _taskCompletionSource?.TrySetResult(oCollection); } }
protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Forms.Forms.Init(this, savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); CrossCurrentActivity.Current.Init(this, savedInstanceState); Xamarin.FormsMaps.Init(this, savedInstanceState); Xamarin.Forms.Forms.ViewInitialized += (object sender, Xamarin.Forms.ViewInitializedEventArgs e) => { if (!string.IsNullOrWhiteSpace(e.View.AutomationId)) { e.NativeView.ContentDescription = e.View.AutomationId; } }; App mainForms = new App(); LoadApplication(mainForms); serviceIntent = new Intent(this, typeof(AndroidLocationService)); SetServiceMethods(); SetAppTheme(); if (Intent.Action == Intent.ActionSend) { // Get the info from ClipData ClipData.Item file = Intent.ClipData.GetItemAt(0); // Open a stream from the URI System.IO.Stream fileStream = ContentResolver.OpenInputStream(file.Uri); // Save it over System.IO.MemoryStream memOfFile = new System.IO.MemoryStream(); fileStream.CopyTo(memOfFile); string decoded = Encoding.UTF8.GetString(memOfFile.ToArray()); _ = mainForms.ImportRawGeoJSON(decoded); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <string> images = new List <string>(); if (data != null) { ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); if (path != null) { //Rotate Image var imageRotated = ImageHelpers.RotateImage(path); var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff")); images.Add(newPath); } } } else { Android.Net.Uri uri = data.Data; var path = GetRealPathFromURI(uri); if (path != null) { //Rotate Image var imageRotated = ImageHelpers.RotateImage(path); var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff")); images.Add(newPath); } } MessagingCenter.Send <App, List <string> >((App)Xamarin.Forms.Application.Current, "ImagesSelected", images); } } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == Result.Ok) { // This is used to stock file paths var files = new List <Classes.File>(); // Get file(s) from ClipBoard if (data != null) { // Get ClipData from Intent, null if not multiple ClipData items ClipData clipData = data.ClipData; if (clipData != null) { // Multiple files returned by user for (int i = 0; i < clipData.ItemCount; i++) { // Get ClipData containin uri ClipData.Item item = clipData.GetItemAt(i); // Get file URI Android.Net.Uri uri = item.Uri; // Retreive Stream from uri and add it to files files.Add(new Classes.File(GetFileName(uri), ContentResolver.OpenInputStream(uri), GetFileLength(uri))); } } else { // Single File // Get URI var uri = data.Data; // Retreive Stream from uri and add it to files files.Add(new Classes.File(GetFileName(uri), ContentResolver.OpenInputStream(uri), GetFileLength(uri))); } // Dispose Recources data.Dispose(); // Sending Result to the SelectPage MessagingCenter.Send("MyApp", "FilesSent", files); } } }
public byte[] GetImageData() { ClipboardManager clipboard = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService); ContentResolver cr = Forms.Context.ContentResolver; ClipData clip = clipboard.PrimaryClip; byte[] p = null; if (clip != null) { // Gets the first item from the clipboard data ClipData.Item item = clip.GetItemAt(0); // Tries to get the item's contents as a URI Android.Net.Uri pasteUri = item.Uri; // If the clipboard contains a URI reference if (pasteUri != null) { // Is this a content URI? String uriMimeType = cr.GetType(pasteUri); // If the return value is not null, the Uri is a content Uri if (uriMimeType != null) { // Does the content provider offer a MIME type that the current application can use? if (uriMimeType.StartsWith("image/")) { // Get the data from the content provider. ICursor pasteCursor = cr.Query(pasteUri, null, null, null, null); // If the Cursor contains data, move to the first record if (pasteCursor != null) { if (pasteCursor.MoveToFirst()) { p = pasteCursor.GetBlob(0); } } // close the Cursor pasteCursor.Close(); } } } } return(p); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent intent) { base.OnActivityResult(requestCode, resultCode, intent); FacebookClientManager.OnActivityResult(requestCode, resultCode, intent); GoogleClientManager.OnAuthCompleted(requestCode, resultCode, intent); //If we are calling multiple image selection, enter into here and return photos and their filepaths. if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <string> images = new List <string>(); if (intent != null) { //Separate all photos and get the path from them all individually. ClipData clipData = intent.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } } else { Android.Net.Uri uri = intent.Data; var path = GetRealPathFromURI(uri); if (path != null) { images.Add(path); } } //Send our images to the carousel view. MessagingCenter.Send <App, List <string> >((App)Xamarin.Forms.Application.Current, "ImagesSelectedAndroid", images); } } }
public void OnActivityResult(int requestCode, Result resultCode, Intent data) { ObservableCollection <MediaFile> mediaPicked = null; if (requestCode == MultiPickerResultCode) { if (resultCode == Result.Ok) { mediaPicked = new ObservableCollection <MediaFile>(); if (data != null) { ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var media = CreateMediaFileFromUri(uri); if (media != null) { mediaPicked.Add(media); OnMediaPicked?.Invoke(this, media); } } } else { Android.Net.Uri uri = data.Data; var media = CreateMediaFileFromUri(uri); if (media != null) { mediaPicked.Add(media); OnMediaPicked?.Invoke(this, media); } } OnMediaPickedCompleted?.Invoke(this, mediaPicked); } } mediaPickedTcs?.TrySetResult(mediaPicked); } }
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (resultCode == Result.Ok) { if (data != null) { if (data.ClipData != null) { ClipData clipData = data.ClipData; if (clipData == null) { return; } System.Console.WriteLine(clipData.ItemCount); List <Android.Net.Uri> photoList = new List <Android.Net.Uri>(); for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); var uri = item.Uri; //ImagePrint(uri); photoList.Add(uri); } listView.Adapter = new MyCustomListAdapter(photoList); } else if (data.Data != null) { List <Android.Net.Uri> photoList = new List <Android.Net.Uri>(); Android.Net.Uri uri = data.Data; //ImagePrint(uri); photoList.Add(uri); listView.Adapter = new MyCustomListAdapter(photoList); } } } }
protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (requestCode == PickImageId) { if ((resultCode == Result.Ok) && (data != null)) { InitSpinner(); sendStatus.Text = "Connecting..."; List <string> files = new List <string>(); ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); var uri = item.Uri; files.Add(FilePathHelper.GetPath(this, uri)); } } else { Android.Net.Uri uri = data.Data; var file = FilePathHelper.GetPath(this, uri); files.Add(file); } if (files.Count == 0) { Finish(); return; } await SendFiles(files.ToArray()); } else { Finish(); return; } } }
protected override void OnNewIntent(Intent intent) { if (intent.Action == Intent.ActionSend) { ClipData.Item item = intent.ClipData.GetItemAt(0); // Pega o nome do arquivo que está sendo compartilhado Android.Database.ICursor returnCursor = ContentResolver.Query(item.Uri, null, null, null, null); int index = returnCursor.GetColumnIndex(Android.Provider.OpenableColumns.DisplayName); returnCursor.MoveToFirst(); string ext = Path.GetExtension(returnCursor.GetString(index)); var filestream = ContentResolver.OpenInputStream(item.Uri); App.LoadFromSendTo(filestream, ext); } base.OnNewIntent(intent); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent intent) { base.OnActivityResult(requestCode, resultCode, intent); List <string> mediaPicked = null; if ((resultCode == Result.Ok) && (intent != null)) { //Android.Net.Uri uri = intent.Data; //Stream stream = ContentResolver.OpenInputStream(uri); // //// Set the Stream as the completion of the Task //PickImageTaskCompletionSource.SetResult(stream); //mediaPicked = new IList<Stream>(); mediaPicked = new List <string>(); ClipData clipData = intent.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); //Android.Net.Uri uri = item.Uri; //Stream stream = ContentResolver.OpenInputStream(uri); //if (stream != null) //{ // mediaPicked.Add(stream); //} mediaPicked.Add(getPath(item.Uri)); ///external/images/media/424869 } } PickImageTaskCompletionSource.SetResult(mediaPicked); mediaPicked = new List <string>(); } else { PickImageTaskCompletionSource.SetResult(null); } }
/// <summary> /// Callback that gets invoked when the primary clip of the device changes. /// </summary> public void OnPrimaryClipChanged() { ClipboardManager clipBoard = (ClipboardManager)Android.App.Application.Context.GetSystemService(ClipboardService); String pasteData = ""; ClipData.Item item = clipBoard.PrimaryClip.GetItemAt(0); pasteData = item.Text; //Toast.MakeText(Application.Context, "Copied value: " + pasteData, ToastLength.Long).Show(); /*Intent translationActivity = new Intent(Application.Context, typeof(TranslationActivity)); * translationActivity.PutExtra("OCRdText", pasteData); * Application.Context.StartActivity(translationActivity);*/ Application.Context.StartService(new Intent(Application.Context, typeof(FloatingWidgetService))); //Intent translationActivity = new Intent(Application.Context, typeof(MainActivity2)); //Application.Context.StartActivity(translationActivity); }
public bool OnLongClick(View v) { var item = new ClipData.Item(v.Tag.JavaCast <Java.Lang.String>()); var mimeTypes = new String[1]; if (v is ImageView) { mimeTypes[0] = "image/jpeg"; } else if (v is TextView) { mimeTypes[0] = ClipDescription.MimetypeTextPlain; } var data = new ClipData(v.Tag.JavaCast <Java.Lang.String>().ToString(), mimeTypes, item); var dragShadowBuilder = new View.DragShadowBuilder(v); v.StartDragAndDrop(data, dragShadowBuilder, v, 0); return(true); }
bool ProcessDrop(DragEvent evt, ImageView imageView) { // Attempt to parse clip data with expected format: category||entry_id. // Ignore event if data does not conform to this format. ClipData data = evt.ClipData; if (data != null) { if (data.ItemCount > 0) { ClipData.Item item = data.GetItemAt(0); String textData = (String)item.Text; if (textData != null) { StringTokenizer tokenizer = new StringTokenizer(textData, "||"); if (tokenizer.CountTokens() != 2) { return(false); } int category = -1; int entryId = -1; try { category = Java.Lang.Integer.ParseInt(tokenizer.NextToken()); entryId = Java.Lang.Integer.ParseInt(tokenizer.NextToken()); } catch (NumberFormatException exception) { return(false); } UpdateContentAndRecycleBitmap(category, entryId); // Update list fragment with selected entry. TitlesFragment titlesFrag = (TitlesFragment) FragmentManager.FindFragmentById(Resource.Id.frag_title); titlesFrag.SelectPosition(entryId); return(true); } } } return(false); }
public static IMimeItem Parse(ClipData.Item item) { if (item.Uri != null && new AndroidUriMimeItem(item.Uri) is IMimeItem result && result.MimeType != null) { return(result); } if (item.HtmlText != null) { return(new AndroidHtmlMimeItem(item.HtmlText)); } if (item.TextFormatted != null && item.CoerceToHtmlText(Android.App.Application.Context) is string html) { return(new AndroidHtmlMimeItem(html)); } if (item.Text != null) { return(new AndroidTextMimeItem(item.Text)); } if (item.Intent != null) { return(new AndroidIntentMimeItem(item.Intent)); } return(null); }
/// <summary> /// Override OnCreate() /// </summary> protected async override void OnCreate(Bundle bundle) { base.OnCreate(bundle); /// <summary> /// Initialise the counter to 0 /// </summary> int counter = 0; /// <summary> /// Define sensor manager,detector and events /// </summary> _sensorManager = (SensorManager)GetSystemService(Context.SensorService); _sensor = _sensorManager.GetDefaultSensor(SensorType.Accelerometer); _shakeDetector = new ShakeDetector(); /// <summary> /// Preload 15 items /// </summary> ProgressDialog pd = new ProgressDialog(this); pd.SetTitle("Loading.."); pd.Show(); for (int i = 0; i < 15; i++) { if (CheckConnection.iSConnected()) { propsList.Add(await SetViewProperties.SetProperties(new ViewProps())); } else { propsList.Add(SetViewProperties.SetViewProperty(new ViewProps())); } } pd.Dismiss(); /// <summary> /// Set our view from the "main" layout resource /// </summary> SetContentView(Resource.Layout.Main); /// <summary> /// Device specific properties /// </summary> DeviceSpecificProperties props = new DeviceSpecificProperties(); double Y = props.inchY; /// <summary> /// //Define the views and layouts which can be accessed /// </summary> ImageView imageView = FindViewById <ImageView>(Resource.Id.imageView); imageView.SetImageResource(Resource.Drawable.Icon); RelativeLayout layout = FindViewById <RelativeLayout>(Resource.Id.mainLayout); _shakeDetector.Shaked += (sender1, shakeCount) => { lock (_syncLock) { imageView.Visibility = ViewStates.Invisible; } }; /// <summary> /// Events /// </summary> imageView.LongClick += (sender, e) => { View v = (View)sender; ClipData.Item item = new ClipData.Item("category", "value"); string[] mimeTypes = { ClipDescription.MimetypeTextPlain }; ClipData dragData = new ClipData("category", mimeTypes, item); View.DragShadowBuilder myShadow = new View.DragShadowBuilder(imageView); imageView.StartDrag(dragData, myShadow, null, 0); }; imageView.Drag += (sender, e) => { View v = (View)sender; switch (e.Event.Action) { case DragAction.Started: layoutParams = (RelativeLayout.LayoutParams)v.LayoutParameters; break; case DragAction.Entered: var x_cord = (int)e.Event.GetX(); var y_cord = (int)e.Event.GetY(); break; case DragAction.Exited: x_cord = (int)e.Event.GetX(); y_cord = (int)e.Event.GetY(); layoutParams.LeftMargin = x_cord; layoutParams.TopMargin = y_cord; v.LayoutParameters = layoutParams; break; case DragAction.Location: x_cord = (int)e.Event.GetX(); y_cord = (int)e.Event.GetY(); break; case DragAction.Drop: break; default: break; } }; int prevtime = 0; imageView.Click += async(sender, e) => { prevtime++; if (prevtime == 2) { if (CheckConnection.iSConnected()) { var res = await SetViewProperties.SetProperties(new ViewProps()); imageView.SetImageBitmap(res.image); if (res.title != null) { ActionBar.Title = res.title; } } else { var res = SetViewProperties.SetViewProperty(new ViewProps()); imageView.SetImageBitmap(res.image); if (res.title != null) { ActionBar.Title = res.title; } } prevtime = 0; } }; layout.Touch += (sender, e) => { try { imageView.Visibility = ViewStates.Visible; var x_cord = (int)e.Event.RawX; var y_cord = (int)(e.Event.RawY - Y * 0.23); layoutParams = new RelativeLayout.LayoutParams((int)100, (int)100); layoutParams.LeftMargin = x_cord; layoutParams.TopMargin = y_cord; imageView.LayoutParameters = layoutParams; if (e.Event.Action == MotionEventActions.Up) { try { if (counter < 15) { var res = propsList[counter]; imageView.SetImageBitmap(res.image); if (res.title != null) { ActionBar.Title = res.title; } counter++; //if (CheckConnection.iSConnected()) //{ // var res = await SetViewProperties.SetProperties(new ViewProps()); // //var res = propsList[counter + 1]; // imageView.SetImageBitmap(res.image); // ActionBar.Title = res.title; //} //else //{ // var res = SetViewProperties.SetViewProperty(new ViewProps()); // imageView.SetImageBitmap(res.image); //} } else { counter = 0; } } catch (Java.Lang.Exception e1) { e1.PrintStackTrace(); var res = SetViewProperties.SetViewProperty(new ViewProps()); imageView.SetImageBitmap(res.image); } } } catch (Java.Lang.Exception e1) { var res = SetViewProperties.SetViewProperty(new ViewProps()); imageView.SetImageBitmap(res.image); } }; }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); //If we are calling multiple image selection, enter into here and return photos and their filepaths. if (requestCode == OPENGALLERYCODE && resultCode == Result.Ok) { List <string> images = new List <string>(); List <Stream> imgStream = new List <Stream>(); if (data != null) { //Separate all photos and get the path from them all individually. ClipData clipData = data.ClipData; if (clipData != null) { for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); // TESTING RESIZE !! byte[] file = this.Resize(uri, path, 60, 60); //byte[] file = File.ReadAllBytes(path); System.IO.Stream strm = new MemoryStream(file); if (path != null) { imgStream.Add(strm); images.Add(path); } } } else { Android.Net.Uri uri = data.Data; var path = GetRealPathFromURI(uri); // TESTING RESIZE !! byte[] file = this.Resize(uri, path, 60, 60); // byte[] file = File.ReadAllBytes(path); System.IO.Stream strm = new MemoryStream(file); if (path != null) { imgStream.Add(strm); images.Add(path); } } //Send our images to the carousel view. MessagingCenter.Send(imgStream, "ImagesStreamAndroid"); // New test MessagingCenter.Send(images, "ImagesSelectedAndroid"); } } }
public override void OnActivityResult(int requestCode, int resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); try { if (_paths != null) { _paths.Clear(); /*remove initial image*/ } //result code is -1 if (resultCode == (int)Result.Ok) { var clipData = data.ClipData; Uri uri; string path; if (clipData != null) //handlem multi selection { //Console.WriteLine(string.Format("Clip data count {0}", clipData.ItemCount)); //var imagePath = HelperClass.GetPathToImage(pickedImageUrl); for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); uri = item.Uri; //get the image Uris //In case you need image's absolute path path = HelperClass.GetPathToImage(uri); if (path != null) { if (_paths != null) { _paths.Add(path); //add the image paths } } } Toast.MakeText(Application.Context, string.Format("{0} images selected", clipData.ItemCount), ToastLength.Short).Show(); _carImageSelected = true; //confirmationDialog.Show(); } else { uri = data.Data; path = HelperClass.GetPathToImage(uri); if (path != null) { if (_paths != null) { _paths.Add(path); //add the image paths } _carImageSelected = true; } //@TODO cater for single image selection? Toast.MakeText(Application.Context, "You have selected only one image, you can add upto 25", ToastLength.Short).Show(); //confirmationDialog.Show(); } //show images previews here } } catch (Exception ex) { Console.WriteLine(string.Format("Image selection error {0} {1}", ex.Message, ex.StackTrace)); Toast.MakeText(Application.Context, string.Format("Unable to select image please try again {0}", ex.Message), ToastLength.Long).Show(); _carImageSelected = false; MetricsManager.TrackEvent("Image selection error " + ex.Message + ex.StackTrace); } //verify validation flag if (_carImageSelected) { NotifyCompleted(); // All the input is valid.. Set the step as completed } else { NotifyIncomplete(); //Input is invalid do not proceed to next step } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SupportActionBar.SetHomeButtonEnabled(true); SupportActionBar.SetDisplayShowHomeEnabled(true); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SetContentView(Resource.Layout.yandex_key_select); _clipboardManager = GetSystemService(ClipboardService); _imm = (InputMethodManager)GetSystemService(InputMethodService); _contentView = FindViewById <View>(Android.Resource.Id.Content); SetResult(Android.App.Result.Canceled); _oldYandexApiKey = ActivityCommon.YandexApiKey ?? string.Empty; _activityCommon = new ActivityCommon(this); _layoutYandexKey = FindViewById <LinearLayout>(Resource.Id.layoutYandexKey); _layoutYandexKey.SetOnTouchListener(this); _editTextYandexApiKey = FindViewById <EditText>(Resource.Id.editTextYandexApiKey); _editTextYandexApiKey.Text = _oldYandexApiKey; _buttonYandexApiKeyCreate = FindViewById <Button>(Resource.Id.buttonYandexKeyCreate); _buttonYandexApiKeyCreate.SetOnTouchListener(this); _buttonYandexApiKeyCreate.Click += (sender, args) => { StartActivity(new Intent(Intent.ActionView, Android.Net.Uri.Parse(@"https://tech.yandex.com/keys/get/?service=trnsl"))); }; _buttonYandexApiKeyGet = FindViewById <Button>(Resource.Id.buttonYandexKeyGet); _buttonYandexApiKeyGet.SetOnTouchListener(this); _buttonYandexApiKeyGet.Click += (sender, args) => { StartActivity(new Intent(Intent.ActionView, Android.Net.Uri.Parse(@"https://tech.yandex.com/keys/"))); }; _buttonYandexApiKeyPaste = FindViewById <Button>(Resource.Id.buttonYandexKeyPaste); _buttonYandexApiKeyPaste.SetOnTouchListener(this); _buttonYandexApiKeyPaste.Click += (sender, args) => { ClipboardManager clipboardManagerNew = _clipboardManager as ClipboardManager; if (clipboardManagerNew != null) { if (clipboardManagerNew.HasPrimaryClip) { string clipText = string.Empty; ClipData.Item item = clipboardManagerNew.PrimaryClip.GetItemAt(0); if (item != null) { clipText = clipboardManagerNew.PrimaryClipDescription.HasMimeType(ClipDescription.MimetypeTextPlain) ? item.Text : item.CoerceToText(this); } if (!string.IsNullOrWhiteSpace(clipText)) { _editTextYandexApiKey.Text = clipText.Trim(); UpdateDisplay(); } } } else { #pragma warning disable 618 Android.Text.ClipboardManager clipboardManagerOld = _clipboardManager as Android.Text.ClipboardManager; #pragma warning restore 618 if (!string.IsNullOrWhiteSpace(clipboardManagerOld?.Text)) { _editTextYandexApiKey.Text = clipboardManagerOld.Text.Trim(); UpdateDisplay(); } } }; _buttonYandexApiKeyPaste.TextChanged += (sender, args) => { UpdateDisplay(); }; _textViewYandexApiKeyTestResult = FindViewById <TextView>(Resource.Id.textViewYandexKeyTestResult); _buttonYandexApiKeyTest = FindViewById <Button>(Resource.Id.buttonYandexKeyTest); _buttonYandexApiKeyTest.SetOnTouchListener(this); _buttonYandexApiKeyTest.Click += (sender, args) => { _textViewYandexApiKeyTestResult.Text = string.Empty; ActivityCommon.YandexApiKey = _editTextYandexApiKey.Text.Trim(); if (!_activityCommon.TranslateStrings(new List <string> { @"Dieser Text wurde erfolgreich übersetzt" }, list => { if (list != null && list.Count > 0) { _textViewYandexApiKeyTestResult.Text = list[0]; } else { _textViewYandexApiKeyTestResult.Text = GetString(Resource.String.button_yandex_key_test_failed); } }, true)) { _textViewYandexApiKeyTestResult.Text = GetString(Resource.String.button_yandex_key_test_failed); } }; UpdateDisplay(); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (requestCode == 1) { #region GetDataFromGallery UploadPrescription UploadPrescription; var str = ""; base.OnActivityResult(requestCode, resultCode, data); if (resultCode == Result.Ok) { int Totalsize = 0; List <byte[]> images = new List <byte[]>(); List <string> imagename = new List <string>(); var IsValid = true; if (data != null) { ClipData clipData = data.ClipData; if (clipData != null) { if (clipData.ItemCount > 4) { MessagingCenter.Send <App, string>((App)Xamarin.Forms.Application.Current, "imagevalidation", "Please Upload Select 4 Images"); return; } for (int i = 0; i < clipData.ItemCount; i++) { ClipData.Item item = clipData.GetItemAt(i); Android.Net.Uri uri = item.Uri; var path = GetRealPathFromURI(uri); if (path != null) { //Rotate Image var imageRotated = DependencyService.Get <IImageHelpers>().RotateImage(path); Totalsize += imageRotated.Length; if (Totalsize > 10000000) { IsValid = false; MessagingCenter.Send <App, string>((App)Xamarin.Forms.Application.Current, "imagevalidation", "Image Cannot be Greater than 10 MB"); break; } //var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff")); // str = System.Convert.ToBase64String(imageRotated); images.Add(imageRotated); imagename.Add(uri.LastPathSegment); // images.Add(newPath); } } } else { Android.Net.Uri uri = data.Data; var path = GetRealPathFromURI(uri); if (path != null) { //Rotate Image var imageRotated = DependencyService.Get <IImageHelpers>().RotateImage(path); Totalsize += imageRotated.Length; if (Totalsize > 10000000) { IsValid = false; MessagingCenter.Send <App, string>((App)Xamarin.Forms.Application.Current, "imagevalidation", "Image Cannot be Greater than 10 MB"); } // var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff")); str = System.Convert.ToBase64String(imageRotated); images.Add(imageRotated); imagename.Add(uri.LastPathSegment); //images.Add(str); //images.Add(newPath); } } if (IsValid) { MessagingCenter.Send <App, List <byte[]> >((App)Xamarin.Forms.Application.Current, "ImagesSelected", images); } MessagingCenter.Send <App, List <string> >((App)Xamarin.Forms.Application.Current, "ImagesSelectedName", imagename); } } #endregion GetDataFromGallery } else { } }
public void OnLongPress(MotionEvent e) { if (!HasAnyDragGestures()) { return; } SendEventArgs <DragGestureRecognizer>(rec => { if (!rec.CanDrag) { return; } var element = GetView(); var renderer = AppCompat.Platform.GetRenderer(element); var v = renderer.View; if (v.Handle == IntPtr.Zero) { return; } var args = rec.SendDragStarting(element); if (args.Cancel) { return; } CustomLocalStateData customLocalStateData = new CustomLocalStateData(); customLocalStateData.DataPackage = args.Data; //_dragSource[element] = args.Data; string clipDescription = FastRenderers.AutomationPropertiesProvider.ConcatenateNameAndHelpText(element) ?? String.Empty; ClipData.Item item = null; List <string> mimeTypes = new List <string>(); if (!args.Handled) { if (args.Data.Image != null) { mimeTypes.Add("image/jpeg"); item = ConvertToClipDataItem(args.Data.Image, mimeTypes); } else { string text = clipDescription ?? args.Data.Text; if (Uri.TryCreate(text, UriKind.Absolute, out _)) { item = new ClipData.Item(AUri.Parse(text)); mimeTypes.Add(ClipDescription.MimetypeTextUrilist); } else { item = new ClipData.Item(text); mimeTypes.Add(ClipDescription.MimetypeTextPlain); } } } var dataPackage = args.Data; ClipData.Item userItem = null; if (dataPackage.Image != null) { userItem = ConvertToClipDataItem(dataPackage.Image, mimeTypes); } if (dataPackage.Text != null) { userItem = new ClipData.Item(dataPackage.Text); } if (item == null) { item = userItem; userItem = null; } ClipData data = new ClipData(clipDescription, mimeTypes.ToArray(), item); if (userItem != null) { data.AddItem(userItem); } var dragShadowBuilder = new AView.DragShadowBuilder(v); customLocalStateData.SourceNativeView = v; customLocalStateData.SourceElement = renderer?.Element; if (Forms.IsNougatOrNewer) { v.StartDragAndDrop(data, dragShadowBuilder, customLocalStateData, (int)ADragFlags.Global | (int)ADragFlags.GlobalUriRead); } else #pragma warning disable CS0618 // Type or member is obsolete { v.StartDrag(data, dragShadowBuilder, customLocalStateData, (int)ADragFlags.Global | (int)ADragFlags.GlobalUriRead); } #pragma warning restore CS0618 // Type or member is obsolete }); }
public static List <ClipData.Item> AsClipDataItems(this IMimeItemCollection mimeItemCollection) { ClipboardContentProvider.Clear(); var result = new List <ClipData.Item>(); string text = null; string html = null; // this has to happen because GMAIL will only paste the first "text/html" AND it won't parse correctly unless it is supplied as ClipData.Item(string,string) foreach (var item in mimeItemCollection.Items) { if (text == null && item.MimeType == "text/plain") { text = item.Value as string; } else if (html == null && item.MimeType == "text/html") { html = item.Value as string; } } if (html != null) { result.Add(new ClipData.Item(text ?? html, html)); } else if (text != null) { result.Add(new ClipData.Item(text)); } foreach (var item in mimeItemCollection.Items) { ClipData.Item androidClipItem = null; // The following block was added to support copying images by intent. // However, I have yet to see where it actually works with 3rd party apps. // Maybe I'm not doing it right? // START OF BLOCK if (item.MimeType.StartsWith("image/", StringComparison.InvariantCultureIgnoreCase) || item.Value is FileInfo) { Java.IO.File file = null; if (item.Value is FileInfo fileInfo) { file = new Java.IO.File(fileInfo.FullName); } else if (item.Value is byte[] byteArray && MimeSharp.Current.Extension(item.MimeType) is List <string> extensions && extensions.Count > 0) { var ext = extensions[0]; var fileName = Guid.NewGuid() + "." + ext; var dir = P42.Utils.Environment.TemporaryStoragePath; var path = Path.Combine(dir, fileName); System.IO.File.WriteAllBytes(path, byteArray); file = new Java.IO.File(path); } if (file != null && file.Exists()) { Android.Net.Uri uri = Android.Net.Uri.FromFile(file); var intent = new Intent(Intent.ActionSend); intent.SetType(item.MimeType); intent.PutExtra(Intent.ExtraStream, uri); intent.SetFlags(ActivityFlags.GrantReadUriPermission); androidClipItem = new ClipData.Item(intent); } file?.Dispose(); } if (androidClipItem == null) { // END OF BLOCK androidClipItem = ClipboardContentProvider.AddAsClipDataItem(item); } result.Add(androidClipItem); } return(result); }