There is no problem. Some devices set the orientation in the header instead of rotating the image. You need to rotate it yourself.
I'm using a Samsung Galaxy A5 2016, Android 7.0. I think that somethin is wrong in TakePictureNow (CamEx2), but I don't know how:
Public Sub TakePictureNow (MyTaskIndex As Int) As ResumableSub
If MyTaskIndex <> TaskIndex Then Return False
Camera.AbortCaptures
Dim builder As JavaObject = Camera.CreateCaptureBuilder
Dim SensorOrientation As Int = GetFromCameraCharacteristic("SENSOR_ORIENTATION")
Dim front As Int = 1
If getIsFrontFacingCamera Then front = -1
Dim orientation As Int = (SensorOrientation + jcamera.GetField("lastKnownOrientation") * front + 360) Mod 360
CaptureSettingMap.Put("JPEG_ORIENTATION", orientation)
SetSettingsFromMap(builder, CaptureSettingMap)
Dim CaptureRequest As Object = Camera.AddCaptureRequest(builder)
If PrintKeys Then PrintAllKeys(CaptureRequest, "Capture Request")
Wait For Camera_PictureTaken (Data() As Byte)
StartPreview(MyTaskIndex, False)
Return Data
End Sub