I developed a camera application that takes a picture, stores it to cache, then loads it
to a server. Everything works perfect. However, when I went to test it on a real phone, I noticed that zooming the camera crashing the app. I have spent 2 weeks trying to get the zoom to work and researching it. I have tried setOnZoomListener, isSmoothZoomSupported etc.
however, no matter what I do, I can't find a way to implement the zoom feature in the app without it crashing. Any point in the right direction to put this together would save my sanity!! Thank you so much in advance!!!!!
The zoom feature of mobile camera is digital zoom not the optical zooming.
So, the zooming is dependent on the camera hardware.
try to get the max zoom value of the camera by using Camera.Parameters.getMaxZoom()
if this method returns zoom value>1 then you are able to zoom the picture preview.
And this is hardware dependent. So, some devices may support some may not.
thanks
Vikash
Related
I am writing a navigation app and I require rotation of the camera around the user (So rather than just rotating the user icon with the compass the camera rotates around the user giving the impression that the map is rotating in accordance to real life.)
I couldn't seem to find a default mode to do this I have tried the bearing tracking modes (GPS and Compass) as well as the location tracking modes:
mapboxMap.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
As I was unable to get it working I implemented a custom compass with a basic low pass filter in order to rotate the camera around the user. However as of upgrading from Mapbox 4.1.1 to 4.2.1 my custom implementation has broken (Rotation has become very laggy and very jagged).
I am sure there is a much easier way to do this but I am having a bit of trouble figuring it out. Could someone please advise me as to whether I was going about it the correct way or if there is a much easier solution that I am looking over?
Thank you in advanced!
To track the user location and rotate the map to the orientation is always pointing in the same direction as the user, use these lines combined:
mapboxMap.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
mapboxMap.getTrackingSettings().setMyBearingTrackingMode(MyBearingTracking.COMPASS);
Note for the full code, i'd recommend checking out this example.
Yes as #SCTaylor says, you absolutely need .setDismissAllTrackingOnGesture(false) to make this work
i'm trying to do a simple AR scene with NFT image that i've created with genTextData. The result works fairly well in unity editor, but once compiled and run on an android device, the camera resolution is very bad and there's no focus at all.
My marker is rather small (3 cm picture), and the camera is so blurred that the AR cannot identify the marker from far away. I have to put the phone right in front of it (still verrrrryy blurred) and it will show my object but with a lot of flickering and jittering.
I tried playing with the filter fields (Sample rate/cutoff..), it helped just a little bit wit the flickering of the object, but it would never display it from far away..i always have to put my phone like right in front of it. The result that i want should be: detecting the small marker (sharp resolution or/and good focus) from a fair distance away from it..just like the distance from your computer screen to your eyes.
The problem could be camera resolution and focus, or it could be something else. But i'm pretty sure that the AR cannot identify the marker points because of the blurriness.
Any ideas or solutions about this problem ?
You can have a look here:
http://augmentmy.world/augmented-reality-unity-games-artoolkit-video-resolution-autofocus
I compiled the Unity plugin java part and set it to use the highest resolution from your phone. Also the auto focus mode is activated.
Tell me if that helps.
I have a custom camera application with the deprecated camera api and a surfaceview. I want to be able to magnify the live feed returned from the camera. I have tried with zoom but I am only limited to the maximum zoom value which is normally 4x but I want more than that. Any ideas on how to do that? I know it is possible because of an app called 30x Zoom in google play. How is that possible? What am I missing?
In my AS3 Flex Mobile application for Android, I am using camera and it is being automatically rotated 90 degrees before I even done any video rotation by myself, it seems like it's a known bug in AIR. But I was wondering if anyone found a solution since it's really pretty important feature for mobile application developer.
I've tried to do some rotation manually in my code, but it is only fixes the view on my display, but still sends the wrong video to the receiver.
If any code is required I will add the snippets
Please let me know.
As you mentioned, this is a known bug with AIR. It is not consistent, either. On some devices, it is in the correct orientation but in some (and all iOS devices, I believe, though I haven't fully tested that), it is rotated as you are seeing. For example, it was always oriented correctly on my Nexus 4 and on my Nexus 5, but a friends Moto X is rotated incorrectly.
Unfortunately, I don't believe there is anything you can do short of having the user do a calibration (i.e. overlay a straight line and tell them to place it horizontally and click a button) and rotating the camera display and any images you take with the display.
That being said, if you are using the camera to take photos, I highly recommend using CameraUI instead, which is the native implementation.
I've faced the same issue today but i'm developping in Java, not with AIR so i don't know if it the same, for me the solution was to add this line before starting the recording.
mMediaRecorder.setOrientationHint(90);
Is there a way I could show what the hind-side camera captures on a full-screen such that it creates an illusion of screen being see-through? It doesn't need to be perfect, just convincing enough, a little lag won't make any difference.
Is it possible to create such an effect using phone camera? If yes, how can the effect be achieved? (as in what transformations to apply etc.)
(I already know how to create a simple Camera Preview)
Edit : Now, I also know it has been done, http://gizmodo.com/5587749/the-samsung-galaxy-s-goes-see+through, But, I still have no clue how to properly do this, I know trial and error is one way, other is calculating what part a user should be seeing if phone wasn't there.
I think there would be some factors involved like -
viewing distance,
viewing angle,
camera zoom range,
camera focus,
camera quality,
phone orientation,
camera position (where is camera located on phone) etc.
So, I don't feel this problem has a simple enough solution, if it is not so, please clarify with an answer.
Thanks for help,
Shobhit,
You can use standard 3D projection math to project a portion of the backside camera image onto the display; you can manage this by assuming everything the camera sees is at a particular depth from the backside camera, and by assuming a particular viewpoint for the observer
You can improve on this by looking for faces/eyes using the frontside camera. You can get a rough estimate of the the viewing distance from the eye spacing, and assume a viewer position midway between the eyes. Of course, this only works for one viewer at a time (e.g., if your face tracker finds multiple faces, you can select one of them).
Also, you can improve the illusion by calibrating the camera and screen so you can match the color and brightness from one to the other.