Skip to content

Commit

Permalink
1.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
weixiansen574 committed May 16, 2024
1 parent 9881a75 commit c34db9c
Show file tree
Hide file tree
Showing 24 changed files with 259 additions and 99 deletions.
9 changes: 4 additions & 5 deletions HybridFileXfer-Android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
applicationId "top.weixiansen574.hybridfilexfer"
minSdk 24
targetSdk 34
versionCode 120
versionName "1.2.0"
versionCode 130
versionName "1.3.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand All @@ -35,11 +35,10 @@ android {
}

dependencies {

implementation "io.github.l4digital:fastscroll:2.1.0"
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
Expand Down
Binary file added HybridFileXfer-Android/app/debug/app-debug.apk
Binary file not shown.
20 changes: 20 additions & 0 deletions HybridFileXfer-Android/app/debug/output-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "top.weixiansen574.hybridfilexfer",
"variantName": "debug",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "app-debug.apk"
}
],
"elementType": "File"
}
Binary file modified HybridFileXfer-Android/app/release/app-release.apk
Binary file not shown.
4 changes: 2 additions & 2 deletions HybridFileXfer-Android/app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 120,
"versionName": "1.2.0",
"versionCode": 130,
"versionName": "1.3.0",
"outputFile": "app-release.apk"
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@ interface ITransferService {

void transferToPc(in List<String> files,String localDir,String remoteDir) = 101;
void transferToMe(in List<String> files, String remoteDir, String localDir) = 102;
List<top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile> listClientFiles(String path) = 100;
int listClientFiles(String path) = 100;
List<top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile> pollRemoteFiles() = 103;
top.weixiansen574.hybridfilexfer.droidcore.ParcelableFileTransferEvent getNextFileTransferEvent() = 110;
top.weixiansen574.hybridfilexfer.droidcore.ParcelableTransferredBytesInfo getTransferredBytesInfo() = 111;

List<top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile> listLocalFiles(String path) = 200;
top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile getParentFile(String path) = 201;
int listLocalFiles(String path) = 200;
List<top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile> pollLocalFiles() = 201;

top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile getParentFile(String path) = 210;



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public void run() {
onStart(proxyInstance);
TaskManger.postOnUiThread(uiHandler::onComplete);
} catch (Throwable e) {
e.printStackTrace();
TaskManger.postOnUiThread(() -> uiHandler.onError(e));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -28,15 +27,15 @@ public abstract class FileSelectAdapter<T> extends RecyclerView.Adapter<FileSele
protected Activity context;
private int lastSelectedCount = 0;
private final FrameLayout frameLayout;
private final RecyclerView recyclerView;
private final View listInView;
private final View loadingView;

public FileSelectAdapter(Activity context, View.OnTouchListener onTouchListener,Toolbar fileSelectToolbar,FrameLayout frameLayout,RecyclerView recyclerView){
public FileSelectAdapter(Activity context, View.OnTouchListener onTouchListener,Toolbar fileSelectToolbar,FrameLayout frameLayout,View listInView){
this.fileSelectToolbar = fileSelectToolbar;
this.context = context;
this.onTouchListener = onTouchListener;
this.frameLayout = frameLayout;
this.recyclerView = recyclerView;
this.listInView = listInView;

selectedItems = new HashSet<>();
loadingView = View.inflate(context,R.layout.loading_files,null);
Expand Down Expand Up @@ -119,6 +118,7 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
cd(getPath(item));
}
});

}


Expand Down Expand Up @@ -191,6 +191,7 @@ public void cancelSelect() {
}



public static class ViewHolder extends RecyclerView.ViewHolder {
ImageView fileIcon;
TextView fileName,dateTime,fileSize;
Expand All @@ -214,12 +215,12 @@ interface OnConfirmFileSelectionListener {
}

public void enterLoadingState(){
frameLayout.removeView(recyclerView);
frameLayout.removeView(listInView);
frameLayout.addView(loadingView);
}

public void exitLoadingState(){
frameLayout.removeView(loadingView);
frameLayout.addView(recyclerView);
frameLayout.addView(listInView);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;

import com.l4digital.fastscroll.FastScroller;

import java.util.ArrayList;
import java.util.List;

Expand All @@ -20,13 +22,13 @@
import top.weixiansen574.hybridfilexfer.core.Utils;
import top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile;

public abstract class IIServiceFileSelectAdapter extends FileSelectAdapter<ParcelableRemoteFile> {
public abstract class IIServiceFileSelectAdapter extends FileSelectAdapter<ParcelableRemoteFile> implements FastScroller.SectionIndexer {
protected String currentDir;
protected List<ParcelableRemoteFile> currentFiles = new ArrayList<>();
protected ITransferService service;

public IIServiceFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, RecyclerView recyclerView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, recyclerView);
public IIServiceFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, View listInView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, listInView);
this.service = service;
}

Expand Down Expand Up @@ -120,11 +122,11 @@ public void cdParent() {
}

public void handleIIServiceExceptions(Throwable e) {

e.printStackTrace();
if (e instanceof DeadObjectException) {
new AlertDialog.Builder(context)
.setTitle("发生异常")
.setMessage("服务端已终止(网络连接中断或服务进程被杀),请重新连接!")
.setMessage(e.getMessage())
.setCancelable(false)
.setPositiveButton("确定", (dialog, which) -> {
context.finish();
Expand Down Expand Up @@ -181,5 +183,8 @@ public int getItemCount() {
return currentFiles.size();
}


@Override
public CharSequence getSectionText(int position) {
return String.valueOf(getItem(position).getName().charAt(0));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,27 @@
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile;

public class LocalFileSelectAdapter extends IIServiceFileSelectAdapter{
public LocalFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, RecyclerView recyclerView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, recyclerView, service);
public LocalFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, View listInView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, listInView, service);
currentDir = "/storage/emulated/0/";

cd(currentDir);
}

@Override
public List<ParcelableRemoteFile> listTargetFiles(String path) throws RemoteException {
return service.listLocalFiles(path);
ArrayList<ParcelableRemoteFile> files = new ArrayList<>();
int size = service.listLocalFiles(path);
for (int i = 0; i < size; i++) {
files.addAll(service.pollLocalFiles());
}
return files;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package top.weixiansen574.hybridfilexfer;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
Expand All @@ -14,22 +15,30 @@
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.hardware.input.InputManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;

import rikka.shizuku.Shizuku;
import rikka.sui.Sui;
Expand All @@ -50,6 +59,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
Expand All @@ -65,8 +75,13 @@ protected void onCreate(Bundle savedInstanceState) {

btn_start_server.setOnClickListener(this);
btn_to_transfer.setOnClickListener(this);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
Expand Down Expand Up @@ -284,6 +299,24 @@ public void shutdown() {
}
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.github){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/weixiansen574/HybridFileXfer"));
startActivity(intent);
return true;
} else if (itemId == R.id.update) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/weixiansen574/HybridFileXfer/releases"));
startActivity(intent);
return true;
}

return super.onOptionsItemSelected(item);
}

@Override
protected void onDestroy() {
super.onDestroy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,28 @@
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import top.weixiansen574.hybridfilexfer.droidcore.ParcelableRemoteFile;

public class RemoteFileSelectAdapter extends IIServiceFileSelectAdapter{
public RemoteFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, RecyclerView recyclerView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, recyclerView, service);
public RemoteFileSelectAdapter(Activity context, View.OnTouchListener onTouchListener, Toolbar fileSelectToolbar, FrameLayout frameLayout, View listInView, ITransferService service) {
super(context, onTouchListener, fileSelectToolbar, frameLayout, listInView, service);
currentDir = "/";
cd(currentDir);

}

@Override
public List<ParcelableRemoteFile> listTargetFiles(String path) throws RemoteException {
return service.listClientFiles(path);
ArrayList<ParcelableRemoteFile> files = new ArrayList<>();
int size = service.listClientFiles(path);
for (int i = 0; i < size; i++) {
files.addAll(service.pollRemoteFiles());
}
return files;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;


import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
Expand Down Expand Up @@ -78,6 +79,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
rv_right_files = findViewById(R.id.rv_right_files);
frameLeft.removeView(shadowLeft);



Intent intent = getIntent();
isRootMode = intent.getBooleanExtra("isRoot", false);

Expand All @@ -103,8 +106,12 @@ public void onServiceConnected(ComponentName name, IBinder service) {
Toolbar localFileSelectToolbar = leftSelectView.findViewById(R.id.toolbar);
Toolbar remoteFileSelectToolbar = rightSelectView.findViewById(R.id.toolbar);
OnTouchListener onTouchListenerForRight = new OnTouchListener(this, false);
leftRVAdapter = new LocalFileSelectAdapter(this, onTouchListenerForLeft, localFileSelectToolbar, findViewById(R.id.frame_rv_left), rv_left_files, iTransferService);
rightRVAdapter = new RemoteFileSelectAdapter(this, onTouchListenerForRight, remoteFileSelectToolbar, findViewById(R.id.frame_rv_right), rv_right_files, iTransferService);
leftRVAdapter = new LocalFileSelectAdapter(this, onTouchListenerForLeft,
localFileSelectToolbar, findViewById(R.id.frame_rv_left_root),
findViewById(R.id.frame_rv_left), iTransferService);
rightRVAdapter = new RemoteFileSelectAdapter(this, onTouchListenerForRight,
remoteFileSelectToolbar, findViewById(R.id.frame_rv_right_root),
findViewById(R.id.frame_rv_right), iTransferService);
rv_left_files.setOnTouchListener(onTouchListenerForLeft);
rv_right_files.setOnTouchListener(onTouchListenerForRight);
leftRVAdapter.setSelectModeListener(isSelectMode -> switchSelectView(isSelectMode ? leftSelectView : null));
Expand Down Expand Up @@ -209,7 +216,6 @@ public void onServerDied() {
}).show();
}
});

}

public void switchTo(boolean isLeft) {
Expand Down Expand Up @@ -474,6 +480,7 @@ public void run() {
}
} catch (RemoteException e) {
isRun = false;
e.printStackTrace();
activity.onServerDied();
}
}
Expand Down
Loading

0 comments on commit c34db9c

Please sign in to comment.