summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-03-11 20:12:55 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-03-11 20:12:55 +0200
commit7aff12e5cc208d475e1e7e829313e139ada4c00b (patch)
tree4819b07bd462e9868c6b4ba9c586765e765959d1
parent573d72c43d8a51a5a8363c1925af311e1610be86 (diff)
parent5637670446b7ab552caa31683ded95508fc3281c (diff)
downloadandroid_packages_apps_Gallery2-7aff12e5cc208d475e1e7e829313e139ada4c00b.tar.gz
android_packages_apps_Gallery2-7aff12e5cc208d475e1e7e829313e139ada4c00b.tar.bz2
android_packages_apps_Gallery2-7aff12e5cc208d475e1e7e829313e139ada4c00b.zip
Merge tag 'LA.UM.8.1.r1-14300-sm8150.0' of https://source.codeaurora.org/quic/la/platform/packages/apps/SnapdragonGallery into lineage-17.1
"LA.UM.8.1.r1-14300-sm8150.0" Change-Id: Ie51d2f3aaa835037fd18201fc372d45e8c121083
-rwxr-xr-x[-rw-r--r--]gallerycommon/src/com/android/gallery3d/common/ApiHelper.java1
-rwxr-xr-x[-rw-r--r--]gallerycommon/src/com/android/gallery3d/exif/ExifParser.java82
-rwxr-xr-xsrc/com/android/gallery3d/app/GestureControllerOverlay.java2
-rwxr-xr-xsrc/com/android/gallery3d/data/LocalImage.java3
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/data/MediaDetails.java7
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/data/MediaItem.java2
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java2
-rwxr-xr-x[-rw-r--r--]src/org/codeaurora/gallery3d/video/SpeakerHooker.java25
8 files changed, 91 insertions, 33 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
index da36f9d4e..4b8d961d2 100644..100755
--- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
+++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java
@@ -370,6 +370,7 @@ public class ApiHelper {
public static class AudioSystem {
public static final int FORCE_NONE = 0;
public static final int FORCE_SPEAKER = 1;
+ public static final int FORCE_NO_BT_A2DP = 10;
public static final int FOR_MEDIA = 1;
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java b/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
index 5621c2339..ec653e9aa 100644..100755
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
@@ -143,6 +143,9 @@ class ExifParser {
protected static final int DEFAULT_IFD0_OFFSET = 8;
+ //HEIC header
+ protected static final int HEIC_HEADER = 0x68656963;
+
private final CountedDataInputStream mTiffStream;
private final int mOptions;
private int mIfdStartOffset = 0;
@@ -753,37 +756,66 @@ class ExifParser {
private boolean seekTiffData(InputStream inputStream) throws IOException,
ExifInvalidFormatException {
CountedDataInputStream dataStream = new CountedDataInputStream(inputStream);
- if (dataStream.readShort() != JpegHeader.SOI) {
- throw new ExifInvalidFormatException("Invalid JPEG format");
- }
-
- short marker = dataStream.readShort();
- while (marker != JpegHeader.EOI
- && !JpegHeader.isSofMarker(marker)) {
- int length = dataStream.readUnsignedShort();
- // Some invalid formatted image contains multiple APP1,
- // try to find the one with Exif data.
- if (marker == JpegHeader.APP1) {
- int header = 0;
- short headerTail = 0;
- if (length >= 8) {
- header = dataStream.readInt();
- headerTail = dataStream.readShort();
- length -= 6;
- if (header == EXIF_HEADER && headerTail == EXIF_HEADER_TAIL) {
- mTiffStartPosition = dataStream.getReadByteCount();
- mApp1End = length;
- mOffsetToApp1EndFromSOF = mTiffStartPosition + mApp1End;
- return true;
+ if (dataStream.readShort() == JpegHeader.SOI) {
+ short marker = dataStream.readShort();
+ while (marker != JpegHeader.EOI
+ && !JpegHeader.isSofMarker(marker)) {
+ int length = dataStream.readUnsignedShort();
+ // Some invalid formatted image contains multiple APP1,
+ // try to find the one with Exif data.
+ if (marker == JpegHeader.APP1) {
+ int header = 0;
+ short headerTail = 0;
+ if (length >= 8) {
+ header = dataStream.readInt();
+ headerTail = dataStream.readShort();
+ length -= 6;
+ if (header == EXIF_HEADER && headerTail == EXIF_HEADER_TAIL) {
+ mTiffStartPosition = dataStream.getReadByteCount();
+ mApp1End = length;
+ mOffsetToApp1EndFromSOF = mTiffStartPosition + mApp1End;
+ return true;
+ }
}
}
+ if (length < 2 || (length - 2) != dataStream.skip(length - 2)) {
+ Log.w(TAG, "Invalid JPEG format.");
+ return false;
+ }
+ marker = dataStream.readShort();
}
- if (length < 2 || (length - 2) != dataStream.skip(length - 2)) {
- Log.w(TAG, "Invalid JPEG format.");
+
+
+ } else{
+ dataStream.skip(6);
+ if (dataStream.readInt() == HEIC_HEADER) {
+ while(true){
+ try{
+ short marker = dataStream.readShort();
+ if (marker == JpegHeader.APP1) {
+ int header = 0;
+ short headerTail = 0;
+ int length = dataStream.readUnsignedShort();
+ header = dataStream.readInt();
+ headerTail = dataStream.readShort();
+ if (header == EXIF_HEADER && headerTail == EXIF_HEADER_TAIL) {
+ mTiffStartPosition = dataStream.getReadByteCount();
+ mApp1End = length;
+ mOffsetToApp1EndFromSOF = mTiffStartPosition + mApp1End;
+ return true;
+ }
+ }
+ }catch (Exception e){
+ break;
+ }
+ }
return false;
+ } else {
+ throw new ExifInvalidFormatException("Invalid JPEG format");
}
- marker = dataStream.readShort();
+
}
+
return false;
}
diff --git a/src/com/android/gallery3d/app/GestureControllerOverlay.java b/src/com/android/gallery3d/app/GestureControllerOverlay.java
index efed3e9d3..9060490c4 100755
--- a/src/com/android/gallery3d/app/GestureControllerOverlay.java
+++ b/src/com/android/gallery3d/app/GestureControllerOverlay.java
@@ -220,7 +220,7 @@ public class GestureControllerOverlay extends FrameLayout implements
}
float targetBrightness = (float) (mStartBrightness + adjustPercent * 1.0f);
if (targetBrightness <= 0.0f) {
- targetBrightness = 0.0f;
+ targetBrightness = 0.004f;
} else if (targetBrightness >= 1.0f) {
targetBrightness = 1.0f;
}
diff --git a/src/com/android/gallery3d/data/LocalImage.java b/src/com/android/gallery3d/data/LocalImage.java
index 2743a3e32..1b5c88b26 100755
--- a/src/com/android/gallery3d/data/LocalImage.java
+++ b/src/com/android/gallery3d/data/LocalImage.java
@@ -356,7 +356,8 @@ public class LocalImage extends LocalMediaItem {
public MediaDetails getDetails() {
MediaDetails details = super.getDetails();
details.addDetail(MediaDetails.INDEX_ORIENTATION, Integer.valueOf(rotation));
- if (MIME_TYPE_JPEG.equals(mimeType)) {
+ if (MIME_TYPE_JPEG.equals(mimeType) || MIME_TYPE_HEIF.equals(mimeType) ||
+ MIME_TYPE_HEIC.equals(mimeType)) {
// ExifInterface returns incorrect values for photos in other format.
// For example, the width and height of an webp images is always '0'.
MediaDetails.extractExifInfo(details, filePath);
diff --git a/src/com/android/gallery3d/data/MediaDetails.java b/src/com/android/gallery3d/data/MediaDetails.java
index 49d78a336..7f32473af 100644..100755
--- a/src/com/android/gallery3d/data/MediaDetails.java
+++ b/src/com/android/gallery3d/data/MediaDetails.java
@@ -171,5 +171,12 @@ public class MediaDetails implements Iterable<Entry<Integer, Object>> {
focalTag.getValueAsRational(0).toDouble());
details.setUnit(MediaDetails.INDEX_FOCAL_LENGTH, R.string.unit_mm);
}
+ ExifTag latitudeTag = exif.getTag(ExifInterface.TAG_GPS_LATITUDE);
+ ExifTag longitudeTag = exif.getTag(ExifInterface.TAG_GPS_LONGITUDE);
+ if (latitudeTag != null && longitudeTag != null) {
+ double latitude = latitudeTag.getValueAsRational(0).toDouble();
+ double longitude = longitudeTag.getValueAsRational(0).toDouble();
+ details.addDetail(MediaDetails.INDEX_LOCATION, new double[] {latitude, longitude});
+ }
}
}
diff --git a/src/com/android/gallery3d/data/MediaItem.java b/src/com/android/gallery3d/data/MediaItem.java
index c27667c7b..da5813613 100644..100755
--- a/src/com/android/gallery3d/data/MediaItem.java
+++ b/src/com/android/gallery3d/data/MediaItem.java
@@ -37,6 +37,8 @@ public abstract class MediaItem extends MediaObject {
public static final int IMAGE_ERROR = -1;
public static final String MIME_TYPE_JPEG = "image/jpeg";
+ public static final String MIME_TYPE_HEIF = "image/heif";
+ public static final String MIME_TYPE_HEIC = "image/heic";
public static final String MIME_TYPE_GIF = "image/gif";
private static final int BYTESBUFFE_POOL_SIZE = 4;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
index 95f8fd258..9f6af5a9a 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
@@ -34,7 +34,7 @@ public class ImageFilterSharpen extends ImageFilterRS {
}
public FilterRepresentation getDefaultRepresentation() {
- FilterRepresentation representation = new FilterBasicRepresentation("Sharpen", 0, 0, 100);
+ FilterRepresentation representation = new FilterBasicRepresentation("Sharpen", -100, 0, 100);
representation.setSerializationName(SERIALIZATION_NAME);
representation.setShowParameterValue(true);
representation.setFilterClass(ImageFilterSharpen.class);
diff --git a/src/org/codeaurora/gallery3d/video/SpeakerHooker.java b/src/org/codeaurora/gallery3d/video/SpeakerHooker.java
index 912de96a5..3ba641ec7 100644..100755
--- a/src/org/codeaurora/gallery3d/video/SpeakerHooker.java
+++ b/src/org/codeaurora/gallery3d/video/SpeakerHooker.java
@@ -51,7 +51,7 @@ public class SpeakerHooker extends MovieHooker {
private MenuItem mMenuSpeakerButton;
- private boolean mIsHeadsetOn = false;
+ private static boolean mIsHeadsetOn = false;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -154,7 +154,12 @@ public class SpeakerHooker extends MovieHooker {
if (isSpeakerOn()) {
turnSpeakerOff();
} else {
- if (mIsHeadsetOn) {
+ if (mAudioManager == null) {
+ initAudioManager();
+ }
+ boolean isBluetoothOn = mAudioManager.isBluetoothA2dpOn() ||
+ mAudioManager.isBluetoothScoOn();
+ if (mIsHeadsetOn || isBluetoothOn) {
turnSpeakerOn();
} else {
Toast.makeText(getContext(), getContext().getString(R.string.speaker_need_headset),
@@ -168,8 +173,16 @@ public class SpeakerHooker extends MovieHooker {
if (mAudioManager == null) {
initAudioManager();
}
- AudioSystem.setForceUse(AudioSystem.FOR_MEDIA,
- AudioSystem.FORCE_SPEAKER);
+ boolean isBluetoothOn = mAudioManager.isBluetoothA2dpOn() ||
+ mAudioManager.isBluetoothScoOn();
+ if (isBluetoothOn) {
+ AudioSystem.setForceUse(AudioSystem.FOR_MEDIA,
+ AudioSystem.FORCE_NO_BT_A2DP);
+ } else {
+ AudioSystem.setForceUse(AudioSystem.FOR_MEDIA,
+ AudioSystem.FORCE_SPEAKER);
+
+ }
}
private void turnSpeakerOff() {
@@ -199,7 +212,9 @@ public class SpeakerHooker extends MovieHooker {
private boolean isSpeakerOn() {
return (AudioSystem.FORCE_SPEAKER
- == AudioSystem.getForceUse(AudioSystem.FOR_MEDIA));
+ == AudioSystem.getForceUse(AudioSystem.FOR_MEDIA)) ||
+ (AudioSystem.FORCE_NO_BT_A2DP
+ == AudioSystem.getForceUse(AudioSystem.FOR_MEDIA));
}
}