I have an app that I have written that works fine on the Samsung Galaxy S series (I have a captivate). However, the app apparently doesn't work on the Droid's as Motorola has laid out the file structure differently.
I'm looking for a way to detect the manufacturer so that I can switch out program behavior.
Does anyone know an easy way to do this?
android.os.Build.MANUFACTURER is probably what you want.
Bear in mind that the file structure is likely to vary on other devices as well, as that's not part of the public SDK.
This what you need in addition to manufacturer:
android.os.Build.MODEL;
Related
I am currently working with Android Sensor API and accelerometer data.
Though the internal components should support high acceleration (even +-16g), I tried some recent smartphone and found that the maximum range of exposed data is usually +-2g (e.g. Nexus 5) and sometimes +-4g (e.g. Nexus 4).
Is there any way to set the full scale of the sensor? (I didn't manage to find a public API for this)
Alternatively, is there any flagship smartphone that support higher range from stock? (e.g. +-8g, +-16g).
I'm facing the same problem as yours.
DISCLAIMER: I just discovered what I'm writing, so I haven't tested it at all... but I think it's in the right direction.
Checking what range is functional is quite simple: Sensor.getMaximumRange()
http://developer.android.com/reference/android/hardware/Sensor.html#getMaximumRange%28%29
Now, as you know, setting the appropriate value is a much more involved thing. I believe it has to do with Android's so-called "Hardware Abstraction Layer"
https://source.android.com/devices/reference/files.html
I've found this document by STMicroelectronics, who are the manufacturers of the accelerometers embedded in Samsung Galaxy SIII and S4 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00063297.pdf
If I'm getting it right, you need to #define ACCEL_MAX_RANGE in configuration.h (page 5 of the document) as 8 or 16*GRAVITY_EARTH. There are plenty of instructions following, which I'm still trying to understand, but I think one would need to root the smartphone and compile Android from its source.
Hope this helps! If you manage to solve it, please let me know so that we can help each other.
Regards
Sorry that this is an answer and not a comment, but I don't have the rep yet. I've got a Moto X 2nd Gen, and the accelerometer has a 16-g range(+/-).
Here's the datasheet for the sensor. It's an MPU6515 from Invensense.
As ignzz stated in his/her initial post, it does not seem to be a problem from the sensor hardware, which in his/her case can also record +/-16g in principle. I believe it has to do with the settings of the operating system.
However, I haven't had time to give a try to what I described above. Has someone tried?
I used to extract accelerometer data by android SDK on Samsung Galaxy S4,
and I encounter a strange problem when I change platform to HTC One M8.
Here is the statement about the experiment:
Once I move the device from place A to place B straight(negative direction of device), I will read the accelerometer data and compute the displacement between A and B.
The curve of acceleromter data on S4 is correct.
It contains two pick with different sign and the shape like 'S' lie on the floor.
But when I use M8, it give me the curve which is wrong obviously. it looks like 'W'
P.S. The motion and program of two are totally the same.
Can anyone give me some reason to the difference?
Is the g-sensor on M8 is the problem?
I'm really stuck on it.
thanks.
From what I understand from trying to use the Moves app, this is due to lack of support of the accelerometer when the device's display is off.
I am looking for a way to change that now and if I find something I will update here.
update:
It seems this could just be due to new hardware not being supported yet. This quote leads me to believe that "...are the low-powered, always listening "Smart Sensors." Accelerometers are nothing new, but HTC's can be used by apps all day long without significant drain on the the battery (as they don't fire up the processor etc). As HTC's opened up the API for these -- dubbed HTC's Smart Sensor Hub -- app developers will be able to hook into this information directly."
i am developing an application for android 4.0. that app in emulator is looking in good size but when we check that application in real device, all images in apps are being very small in size. what should i do? please help me.
If I am following you correctly you are under the illusion that the emulator will mimic a device exactly? And that because your design looks good on the emulator it will translate exactly over to the device?
If that assumption is correct then you need to be aware that the emulator is never going to give you that kind of accuracy. From my own experience the emulator will help as a guide but it cannot and should not really be used as a like for like match against a set or specific device. This all comes down to the fact that different phone manufacturers use different chipsets and render their screens differently to each other. The best thing you can do is to effectively follow the guidelines here http://developer.android.com/guide/practices/screens_support.html to provide a layout that closely resembles what you want.
Simple question,
I make an application for my phone (android froyo).
Is it will run on android froyo tablet ?
Or I must make some modification to make it work on tablet ?
Simple answer: It may run on the tablet - try.
Not so simple answer: It depends on whether you use some features of the phone and whether those features are available in your tablet. For example, if your tablet does not have GPS and you are developing location aware applications, that obviously is not going to work. Another thing to take care of would be the usability of the application. Your UI would most probably be designed with the phone's form factor in mind. That may not look exactly appealing on a large screen device like the tablet.
So long as you use the appropriate <supports-screen> tags in your Manifest.xml file, yes. However, I'd strongly suggest you go about making a tablet UI, because users don't like phone UIs stretched on a tablet screen. This document might help you with that.
I have an LG phone (OS 2.2.1) and an original Droid X phone that I use for testing my app on. I prefer testing on actual phones over the emulator or say the Android-x86 and VirtualBox. Is it worth it to also test on other Hardware Manufacturer's phones like Samsung or HTC? Are there any serious discrepancies on other vendor's phones to consider? -Mike
YES, there are. Here are a few examples, off the top of my head:
Motorola saw fit to change how phone birthdays and other dates are stored in contacts, from a string as in "YYYY-MM-DD" to an integer value with a UNIX timestamp. MotoBlur phones only.
Motorola also messed up the FLAG_BLUR_BEHIND window flag, at least one some phones like the OG Droid. Using that flag will render your activity all but unusable since a screen refresh will take a second.
HTC phones (mostly Sense-based) have issues with date handling, so using SimpleDateFormat may not work in the same way as others.
Your notification icons (especially if they have gray tones) might look weird on phones with custom skins, like HTC Sense phones.
So, yes - definitely check your phone against as many different vendors as you can.
As a general practice, I try to test on as many phones as possible. Sometimes phones (especially oddball mini-form phones) can have unexpected screen resolutions that might mess with your layouts if you hadn't accounted for them. But, yes, if at all possible, test on as many physical devices as you can.