【Titanium】Galaxy S7 edgeだけimageViewのautorotateが効かない

titanium_android3openPhotoGalleryで選択するときには上下が正しく表示されているのだけれど、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 >