forked from hardcoresushi/DroidFS
DroidFS v2.1.3
This commit is contained in:
parent
b503f134d5
commit
a41cde1c53
@ -55,7 +55,7 @@ Some available features are considered risky and are therefore disabled by defau
|
||||
Decrypt and open file using external apps. These apps could save and send the files thus opened.
|
||||
</li>
|
||||
<li><h4>Expose open volumes*:</h4>
|
||||
Allow open volumes to be browsed in the system file explorer (<a href="https://developer.android.com/guide/topics/providers/document-provider">DocumentProvider</a> API). Encrypted files can then be selected from other applications, potentially with permanent access.
|
||||
Allow open volumes to be browsed in the system file explorer (<a href="https://developer.android.com/guide/topics/providers/document-provider">DocumentProvider</a> API). Encrypted files can then be selected from other applications, potentially with permanent access. This feature requires "*Keep volume open when the app goes in background*" to be enabled.
|
||||
</li>
|
||||
<li><h4>Grant write access:</h4>
|
||||
Files opened with another applications can be modified by them. This applies to both previous unsafe features.
|
||||
|
@ -37,8 +37,8 @@ android {
|
||||
applicationId "sushi.hardcore.droidfs"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 32
|
||||
versionCode 35
|
||||
versionName "2.1.2"
|
||||
versionCode 36
|
||||
versionName "2.1.3"
|
||||
|
||||
ndk {
|
||||
abiFilters "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
|
||||
@ -124,7 +124,7 @@ dependencies {
|
||||
|
||||
implementation "androidx.concurrent:concurrent-futures:1.1.0"
|
||||
|
||||
def camerax_version = "1.3.0-rc01"
|
||||
def camerax_version = "1.3.0-rc02"
|
||||
implementation "androidx.camera:camera-camera2:$camerax_version"
|
||||
implementation "androidx.camera:camera-lifecycle:$camerax_version"
|
||||
implementation "androidx.camera:camera-view:$camerax_version"
|
||||
|
@ -35,6 +35,7 @@ import android.media.MediaCodec.BufferInfo;
|
||||
import android.media.MediaCodecInfo;
|
||||
import android.media.MediaFormat;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Range;
|
||||
import android.view.Surface;
|
||||
|
||||
@ -1054,6 +1055,7 @@ public class SucklessEncoderImpl implements Encoder {
|
||||
if (mIsVideoEncoder) {
|
||||
Timebase inputTimebase;
|
||||
if (DeviceQuirks.get(CameraUseInconsistentTimebaseQuirk.class) != null) {
|
||||
Logger.w(mTag, "CameraUseInconsistentTimebaseQuirk is enabled");
|
||||
inputTimebase = null;
|
||||
} else {
|
||||
inputTimebase = mInputTimebase;
|
||||
@ -1065,7 +1067,7 @@ public class SucklessEncoderImpl implements Encoder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInputBufferAvailable(MediaCodec mediaCodec, int index) {
|
||||
public void onInputBufferAvailable(@NonNull MediaCodec mediaCodec, int index) {
|
||||
mEncoderExecutor.execute(() -> {
|
||||
if (mStopped) {
|
||||
Logger.w(mTag, "Receives input frame after codec is reset.");
|
||||
@ -1131,6 +1133,15 @@ public class SucklessEncoderImpl implements Encoder {
|
||||
if (checkBufferInfo(bufferInfo)) {
|
||||
if (!mHasFirstData) {
|
||||
mHasFirstData = true;
|
||||
// Only print the first data to avoid flooding the log.
|
||||
Logger.d(mTag,
|
||||
"data timestampUs = " + bufferInfo.presentationTimeUs
|
||||
+ ", data timebase = " + mInputTimebase
|
||||
+ ", current system uptimeMs = "
|
||||
+ SystemClock.uptimeMillis()
|
||||
+ ", current system realtimeMs = "
|
||||
+ SystemClock.elapsedRealtime()
|
||||
);
|
||||
}
|
||||
BufferInfo outBufferInfo = resolveOutputBufferInfo(bufferInfo);
|
||||
mLastSentAdjustedTimeUs = outBufferInfo.presentationTimeUs;
|
||||
|
@ -35,6 +35,7 @@ import android.media.MediaCodec.BufferInfo;
|
||||
import android.media.MediaCodecInfo;
|
||||
import android.media.MediaFormat;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Range;
|
||||
import android.view.Surface;
|
||||
|
||||
@ -1053,6 +1054,7 @@ public class EncoderImpl implements Encoder {
|
||||
if (mIsVideoEncoder) {
|
||||
Timebase inputTimebase;
|
||||
if (DeviceQuirks.get(CameraUseInconsistentTimebaseQuirk.class) != null) {
|
||||
Logger.w(mTag, "CameraUseInconsistentTimebaseQuirk is enabled");
|
||||
inputTimebase = null;
|
||||
} else {
|
||||
inputTimebase = mInputTimebase;
|
||||
@ -1064,7 +1066,7 @@ public class EncoderImpl implements Encoder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInputBufferAvailable(MediaCodec mediaCodec, int index) {
|
||||
public void onInputBufferAvailable(@NonNull MediaCodec mediaCodec, int index) {
|
||||
mEncoderExecutor.execute(() -> {
|
||||
if (mStopped) {
|
||||
Logger.w(mTag, "Receives input frame after codec is reset.");
|
||||
@ -1130,6 +1132,15 @@ public class EncoderImpl implements Encoder {
|
||||
if (checkBufferInfo(bufferInfo)) {
|
||||
if (!mHasFirstData) {
|
||||
mHasFirstData = true;
|
||||
// Only print the first data to avoid flooding the log.
|
||||
Logger.d(mTag,
|
||||
"data timestampUs = " + bufferInfo.presentationTimeUs
|
||||
+ ", data timebase = " + mInputTimebase
|
||||
+ ", current system uptimeMs = "
|
||||
+ SystemClock.uptimeMillis()
|
||||
+ ", current system realtimeMs = "
|
||||
+ SystemClock.elapsedRealtime()
|
||||
);
|
||||
}
|
||||
BufferInfo outBufferInfo = resolveOutputBufferInfo(bufferInfo);
|
||||
mLastSentAdjustedTimeUs = outBufferInfo.presentationTimeUs;
|
||||
|
@ -1,5 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
for i in "PendingRecording" "Recording" "Recorder"; do
|
||||
diff3 -m ../Suckless$i.java base/$i.java new/$i.java > Suckless$i.java && mv Suckless$i.java ..
|
||||
done
|
||||
|
2
fastlane/metadata/android/en-US/changelogs/36.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/36.txt
Normal file
@ -0,0 +1,2 @@
|
||||
- Fix crash on Android 13
|
||||
- Upgrade CameraX version
|
Loading…
Reference in New Issue
Block a user