【Titanium】Galaxy S7 edgeだけimageViewのautorotateが効かない
openPhotoGalleryで選択するときには上下が正しく表示されているのだけれど、imageViewにセットすると上下逆さまだったり90度回転してたりする。
そのうち直るだろうと思っていたけど、しびれを切らして自分で対応しようとしたときの覚書。
iOSでは起きない。Galaxy S2でも起きない。手持ちのGalaxy S7 edgeだけ。
環境: OS X El Capitan 10.11.6, Titanium SDK 5.5.1.GA
解決してくれそうなモジュールが公開されている。
1.git cloneしてビルド
どうせSDK 6.0.0になったらビルドし直しなので、自前でビルドする。
$ cd ~/Documents/Appcelerator_Studio_Workspace/
$ git clone https://github.com/freshheads/fh.imagefactory.git
$ cd fh.imagefactory/android/
設定ファイルを編集。変更箇所だけ記載
$ less manifest
version: 1.2
minsdk: 5.5.1.GA
architectures: armeabi armeabi-v7a x86
$ less build.properties
titanium.platform=/Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA/android/
android.platform=/Applications/android-sdk-macosx/platforms/android-23
google.apis=/Applications/android-sdk-macosx/add-ons/addon-google_apis-google-23
ビルド実行
$ ant
エラーメッセージに従い足りないディレクトリを作る
$ mkdir lib
$ mkdir assets
$ mkdir build/docs
再度ビルド
$ ant
ビルド成功。dist/fh.imagefactory-android-1.2.zipをプロジェクトにコピーする。
2.Exif情報が取れてない
モジュールの使い方は付属のapp.jsを参考に。
導入してみても症状は変わらず。
Exif情報を表示してみると、何も取得できてない。
[INFO] Exif information:
[INFO]
[INFO] Date/time: null
[INFO] Flash: null
[INFO] GPS altitude: null
[INFO] GPS altitude ref: null
[INFO] GPS date stamp: null
[INFO] GPS latitude: null
[INFO] GPS latitude ref: null
[INFO] GPS longitude: null
[INFO] GPS longitude ref: null
[INFO] GPS processing method: null
[INFO] GPS timestamp: null
[INFO] Image length: 3024
[INFO] Image width: 4032
[INFO] Camera make: null
[INFO] Camera model: null
[INFO] Orientation: 0
[INFO] White balance: null
openPhotoGalleryで取得後Exif情報がなくなっている気がする。
Titanium SDKのソースコードを見ても、ちゃんとExifInterface経由でTAG_ORIENTATIONを参照して処理してる。
Galaxy S7 edge(Android 6.0.1)固有の問題かな?
しかし他のアプリではこの症状は起きてない様子。
Titanium経由でExif情報を取得するJIRAがあった。
SDK 6.0.0がGAになったらもう少し詳しく調査することにした。
< Related Posts >