Portrait for phone, landscape for Tablet (Android-Layout)
Setting a particular orientation based on device density may not work because there are phones which have higher densities than tablets.
What I did was to disable the device's orientation sensor by setting the attribute in the activity tag in the manifest file like this:
android:screenOrientation="nosensor"
When you run your app, by default portrait orientation is set for phones and landscape for tablets(and hence it'll select the xml file from layout-xlarge-land
). And since you've set an orientation lock, it remains in this orientation.
You can measure the actual size (in inches) of the device and then programmatically set the orientation using:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
or
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
To get the physical size of the device you can use the code published here.
It is not 100% accurate, but it is good enough to decide what king of device is running the app.