Hi Guys
I was wondering what is the best way to handle data that was created in invoked native camera application on blackberry.
Lets say that user invoked photo application by clicking on a button, took a photo, saved it in on sd card.
CameraArguments app_camera = new CameraArguments();
Invoke.invokeApplication(Invoke.APP_TYPE_CAMERA, app_camera);
My application has FileSystemJournalListener that grabbed the path of stored photo.
And now my application has to handle the file and display new screen once its on foreground again.
What is the best way to terminate the camera application and gain the back the focus ?
thx
You're doing it the right way, add the journal listener when you invoke the camera then remove it once you have your image. You could try and kill the native camera app with key-injection (warning - this is never a good way to write software) and your app should be sat underneath it when it quits.
Instead of bothering with messy key-injection I just use myApp.requestForeground() when the journal listener detects a new image file has been created - leaving the native phone app in the background.
I think in the newer OS api there are better methods for handling this but we still generally support all the way back to 4.2.1 on a common codebase.
Related
I'm working on adding the ability to use the share button to allow users to save files for use with my main application. Multiple file types (image, video, audio, pdf, etc) need to be supported.
A general use case would be:
The user takes a picture with the standard Camera app or audio recording using the Voice Memos app.
User clicks the Share button and selects my extension from the share list.
Dialog opens up giving the user to opportunity to give a description for the file.
File is saved to where my main app (the containing app) can later access and process it.
I've been able to get to the point where I am prompted to share the file, but I have not been able to find a location to successfully save to that my main app can later read from. Is this even possible? Is there a better way to handle this scenario?
I am currently doing this using Xamarin so debugging is not supported (and logging is minimal). If someone has an answer in Objective C, that would at least help point me in the right direction.
There are a few things that you need to do.
First, your app and your app extension should belong to the same app group:
https://developer.apple.com/library/prerelease/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19
Then you can access the shared storage with something like this:
var groupUrl = NSFileManager.DefaultManager.GetContainerUrl ("stackoverflow.com.mygroup")
Now you can access files in the directory pointed by groupUrl.
Xamarin's guide to creating Share extensions for iOS: http://developer.xamarin.com/guides/ios/platform_features/introduction_to_extensions/
I'm looking for solution that will enable my app to get an event from the server while the phone is in lock mode, when the event occurs the app will open the camera and take a picture.
while the phone remains locked and send the picture to the server in the back ground.
is it possible?
will apple store allow this kind of application?
Clarification:: the idea is not to take a picture without the user knowledge, the goal is to have him take a quick picture without having to open the phone & the application in order for that picture to be taken. If there is a solution that allows me to add a button like the camera build in next to the lock that's a great solution too.
Short answers
No,
No.
This is a huge violation of privacy, and has a great potential for abuse, therefore, there is no way to sneak pictures away from the user's device on demand.
You could send a push notification and ask a user to take a photo and upload it to your server on the other hand.
I'm building an app that is supposed to monitor picture taking even if the app is in the background.
For example:
A user opens the app, insert some settings and then puts the app in the background (locks the device or something). When the user opens the device again and take a photo with the camera, my app needs to catch that event.
I read some tutorials about the ALAssetsLibraryChangedNotification class and didn't exactly understand if this is what am I looking for because it doesn't say if this runs when app is in background.
I was wondering if someone here has some experience with this kind of thing and can give me some input about this kind of thing maybe an observer? Maybe a service? Any ideas?
I'm using Xamarin.Android and I would like to build an application that start in modal way and don't close if you push the home button.
So this application need to be the only one application than a user can use on device.
Somebody can suggest how it can be done?
You best way to do is to make a "Launcher"/"Home" application. The Android SDK comes with a sample on how to do this.
You basically do this by adding your main Activity to the android.intent.category.HOME and android.intent.category.DEFAULT category and you set the launchMode to singleInstance.
This will register it as a Home application, then when you press your home button it should ask you to choose which launcher you want to use. You will have to set it once and it can be changed by the user.
You can find the sample in: android-sdk\samples\android-17\Home\src\com\example\android\home (should also be available in the other API samples).
You cant stop people from installing applications on android devices. You would have to build your own hardware for that however, you can override OnKeyTouch and check for the key being home.
You could build a service that checks the package of each running application and log which applications are run on the device to prevent users from using company property on other things. However, if android ever decides to kill your application the service should stop and this wont work.
Long story short what you are trying to do is flawed in its inception given the platform you are trying to do it on.
I use a ContentObserver in my android application to receive a notification whenever a photo is taken. Obviously iOS doesn't use the intent system, so is there an equivalent or alternative way to do this? I would prefer not to write a full camera application if possible.
This is not quite possible. Even the latest Google+ application on iOS, with its Instant Upload feature does not get notified when photos are taken, it simply checks the asset library while the application is running, and then as long as possible while running in the background before getting timed out by the OS.
The following is from the Google+ help on the matter:
Note: Photos and videos will upload while the Google+ application is
open and for a brief period of time afterwards.
HTH
You cannot run in the background and get notified when a picture is taken and saved to the Camera Roll by another app on iOS.
That said, you don't really need to write a whole camera app to be able to let the user take pictures from within your app, or to access Camera Roll from within your running app.
Take a look at UIImagePickerController. It is really easy to let the user select or take a photo on iOS.
There is no equivalent to ContentObserver in iOS.