sftp上传实现
This commit is contained in:
@@ -4,11 +4,6 @@
|
||||
android:sharedUserId="com.arialyy"
|
||||
package="com.arialyy.simple">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
|
||||
<application
|
||||
android:name="com.arialyy.simple.base.BaseApplication"
|
||||
android:allowBackup="true"
|
||||
@@ -26,35 +21,34 @@
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".core.download.SFtpDownloadActivity"/>
|
||||
<activity android:name=".core.download.DownloadActivity"/>
|
||||
<activity android:name=".core.download.SingleTaskActivity"/>
|
||||
<activity android:name=".core.download.mutil.MultiTaskActivity"/>
|
||||
<activity android:name=".core.download.fragment.FragmentActivity"/>
|
||||
<activity android:name=".core.download.mutil.MultiDownloadActivity"/>
|
||||
<activity android:name=".core.download.HighestPriorityActivity"/>
|
||||
<activity android:name=".core.download.group.DownloadGroupActivity"/>
|
||||
<activity android:name=".core.download.FtpDownloadActivity"/>
|
||||
<activity android:name=".core.download.group.FTPDirDownloadActivity"/>
|
||||
<activity android:name=".core.upload.HttpUploadActivity"/>
|
||||
<activity android:name=".core.upload.FtpUploadActivity"/>
|
||||
<activity android:name=".core.download.KotlinDownloadActivity"/>
|
||||
<activity android:name=".core.download.ComponentActivity"/>
|
||||
<activity android:name=".core.upload.SFtpUploadActivity" />
|
||||
<activity android:name=".core.download.SFtpDownloadActivity" />
|
||||
<activity android:name=".core.download.DownloadActivity" />
|
||||
<activity android:name=".core.download.SingleTaskActivity" />
|
||||
<activity android:name=".core.download.mutil.MultiTaskActivity" />
|
||||
<activity android:name=".core.download.fragment.FragmentActivity" />
|
||||
<activity android:name=".core.download.mutil.MultiDownloadActivity" />
|
||||
<activity android:name=".core.download.HighestPriorityActivity" />
|
||||
<activity android:name=".core.download.group.DownloadGroupActivity" />
|
||||
<activity android:name=".core.download.FtpDownloadActivity" />
|
||||
<activity android:name=".core.download.group.FTPDirDownloadActivity" />
|
||||
<activity android:name=".core.upload.HttpUploadActivity" />
|
||||
<activity android:name=".core.upload.FtpUploadActivity" />
|
||||
<activity android:name=".core.download.KotlinDownloadActivity" />
|
||||
<activity android:name=".core.download.ComponentActivity" />
|
||||
<activity
|
||||
android:name=".core.FullScreenCodeActivity"
|
||||
android:screenOrientation="landscape"
|
||||
android:theme="@style/FullScreen"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize"/>
|
||||
<activity android:name=".core.download.m3u8.M3U8VodDLoadActivity"/>
|
||||
<activity android:name=".core.download.m3u8.M3U8LiveDLoadActivity"/>
|
||||
|
||||
<service android:name=".core.download.service.DownloadService"/>
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity android:name=".core.download.m3u8.M3U8VodDLoadActivity" />
|
||||
<activity android:name=".core.download.m3u8.M3U8LiveDLoadActivity" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
@@ -63,8 +57,15 @@
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/aria_fileprovider_paths"/>
|
||||
android:resource="@xml/aria_fileprovider_paths" />
|
||||
</provider>
|
||||
|
||||
<service android:name=".core.download.service.DownloadService" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
</manifest>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
3、只对新的多线程下载任务有效
|
||||
4、只对多线程的任务有效
|
||||
-->
|
||||
<useBlock value="true"/>
|
||||
<useBlock value="false"/>
|
||||
|
||||
<!--设置下载线程数,下载线程数不能小于1
|
||||
注意:
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.arialyy.simple.core.download.m3u8.M3U8LiveDLoadActivity;
|
||||
import com.arialyy.simple.core.download.m3u8.M3U8VodDLoadActivity;
|
||||
import com.arialyy.simple.core.upload.FtpUploadActivity;
|
||||
import com.arialyy.simple.core.upload.HttpUploadActivity;
|
||||
import com.arialyy.simple.core.upload.SFtpUploadActivity;
|
||||
import com.arialyy.simple.databinding.ActivityMainBinding;
|
||||
import com.arialyy.simple.modlue.CommonModule;
|
||||
import com.arialyy.simple.to.NormalTo;
|
||||
@@ -117,10 +118,14 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> {
|
||||
module.startNextActivity(MainActivity.this, data.get(position),
|
||||
M3U8LiveDLoadActivity.class);
|
||||
break;
|
||||
case 8: // sftp
|
||||
case 8: // d_sftp
|
||||
module.startNextActivity(MainActivity.this, data.get(position),
|
||||
SFtpDownloadActivity.class);
|
||||
break;
|
||||
case 9: // u_sftp
|
||||
module.startNextActivity(MainActivity.this, data.get(position),
|
||||
SFtpUploadActivity.class);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -23,7 +23,7 @@ import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import com.arialyy.annotations.Download;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.common.FtpOption;
|
||||
import com.arialyy.aria.core.common.SFtpOption;
|
||||
import com.arialyy.aria.core.download.DownloadEntity;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.task.DownloadTask;
|
||||
@@ -105,7 +105,6 @@ public class SFtpDownloadActivity extends BaseActivity<ActivitySftpDownloadBindi
|
||||
if (!pubKey.exists()) {
|
||||
FileUtil.createFileFormInputStream(getAssets().open("id_rsa.pub"), pubKeyPath);
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -144,8 +143,8 @@ public class SFtpDownloadActivity extends BaseActivity<ActivitySftpDownloadBindi
|
||||
}
|
||||
}
|
||||
|
||||
private FtpOption getFtpOption() {
|
||||
FtpOption option = new FtpOption();
|
||||
private SFtpOption getFtpOption() {
|
||||
SFtpOption option = new SFtpOption();
|
||||
option.login(user, passw); // 账号密码登录
|
||||
// 证书登录
|
||||
option.setPrvKey(prvKeyPath); // 设置私钥
|
||||
|
||||
@@ -237,6 +237,7 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
||||
|
||||
@Download.onTaskFail
|
||||
void taskFail(DownloadTask task, Exception e) {
|
||||
ALog.d(TAG, "下载失败");
|
||||
Toast.makeText(SingleTaskActivity.this, getString(R.string.download_fail), Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
if (task != null && task.getKey().equals(mUrl)) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
@@ -76,6 +77,9 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
|
||||
if (entity == null) {
|
||||
return;
|
||||
}
|
||||
if (entity.getM3U8Entity() != null){
|
||||
getBinding().pb.setMax(entity.getM3U8Entity().getPeerNum());
|
||||
}
|
||||
mTaskId = entity.getId();
|
||||
if (entity.getState() == IEntity.STATE_STOP) {
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
@@ -98,6 +102,19 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
|
||||
}
|
||||
});
|
||||
getBinding().setViewModel(this);
|
||||
getBinding().pb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
|
||||
}
|
||||
|
||||
@Override public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
|
||||
}
|
||||
|
||||
@Override public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
Aria.download(this).load(mTaskId).m3u8VodOption().jumPeerIndex(seekBar.getProgress());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void chooseUrl() {
|
||||
@@ -202,7 +219,7 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
|
||||
@Download.onTaskStart
|
||||
void taskStart(DownloadTask task) {
|
||||
if (task.getKey().equals(mUrl)) {
|
||||
getBinding().setFileSize(task.getConvertFileSize());
|
||||
getBinding().pb.setMax(task.getEntity().getM3U8Entity().getPeerNum());
|
||||
ALog.d(TAG, "isComplete = " + task.isComplete() + ", state = " + task.getState());
|
||||
}
|
||||
}
|
||||
@@ -364,7 +381,7 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
|
||||
|
||||
static class KeyUrlConverter implements IKeyUrlConverter{
|
||||
|
||||
@Override public String convert(String keyUrl) {
|
||||
@Override public String convert(String m3u8Url, String keyUrl) {
|
||||
ALog.d("TAG", "convertUrl....");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
|
||||
//upload();
|
||||
break;
|
||||
case R.id.cancel:
|
||||
Aria.upload(this).loadFtp(mTaskId).cancel();
|
||||
Aria.upload(this).loadFtp(mTaskId).cancel(false);
|
||||
mTaskId = -1;
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
break;
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
/*
|
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.arialyy.simple.core.upload;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import com.arialyy.annotations.Upload;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.common.SFtpOption;
|
||||
import com.arialyy.aria.core.inf.IEntity;
|
||||
import com.arialyy.aria.core.task.UploadTask;
|
||||
import com.arialyy.aria.core.upload.UploadEntity;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
import com.arialyy.frame.util.FileUtil;
|
||||
import com.arialyy.frame.util.show.T;
|
||||
import com.arialyy.simple.R;
|
||||
import com.arialyy.simple.base.BaseActivity;
|
||||
import com.arialyy.simple.common.ModifyUrlDialog;
|
||||
import com.arialyy.simple.databinding.ActivitySftpUploadBinding;
|
||||
import com.arialyy.simple.util.AppUtil;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by lyy on 2017/7/28. Ftp 文件上传demo
|
||||
*/
|
||||
public class SFtpUploadActivity extends BaseActivity<ActivitySftpUploadBinding> {
|
||||
private final int OPEN_FILE_MANAGER_CODE = 0xB1;
|
||||
private String mFilePath;
|
||||
private String mUrl;
|
||||
private UploadModule mModule;
|
||||
private long mTaskId = -1;
|
||||
private String user = "tester", pwd = "password";
|
||||
|
||||
@Override protected void init(Bundle savedInstanceState) {
|
||||
setTile("D_FTP 文件上传");
|
||||
super.init(savedInstanceState);
|
||||
Aria.upload(this).register();
|
||||
|
||||
getBinding().setViewModel(this);
|
||||
setUI();
|
||||
}
|
||||
|
||||
private void setUI() {
|
||||
mModule = ViewModelProviders.of(this).get(UploadModule.class);
|
||||
mModule.getSFtpInfo(this).observe(this, new Observer<UploadEntity>() {
|
||||
@Override public void onChanged(@Nullable UploadEntity entity) {
|
||||
if (entity != null) {
|
||||
mTaskId = entity.getId();
|
||||
if (entity.getFileSize() != 0) {
|
||||
getBinding().setFileSize(CommonUtil.formatFileSize(entity.getFileSize()));
|
||||
getBinding().setProgress(entity.isComplete() ? 100
|
||||
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
|
||||
}
|
||||
getBinding().setUrl(entity.getUrl());
|
||||
getBinding().setFilePath(entity.getFilePath());
|
||||
mUrl = entity.getUrl();
|
||||
mFilePath = entity.getFilePath();
|
||||
getBinding().setStateStr(getString(
|
||||
entity.getState() == IEntity.STATE_RUNNING ? R.string.stop : R.string.start));
|
||||
} else {
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
}
|
||||
}
|
||||
});
|
||||
setHelpCode();
|
||||
}
|
||||
|
||||
private void setHelpCode() {
|
||||
//try {
|
||||
// getBinding().codeView.setSource(AppUtil.getHelpCode(this, "FtpUpload.java"));
|
||||
//} catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
//}
|
||||
}
|
||||
|
||||
@Override protected int setLayoutId() {
|
||||
return R.layout.activity_sftp_upload;
|
||||
}
|
||||
|
||||
public void chooseUrl() {
|
||||
ModifyUrlDialog dialog =
|
||||
new ModifyUrlDialog(this, getString(R.string.modify_url_dialog_title), mUrl);
|
||||
dialog.show(getSupportFragmentManager(), "ModifyUrlDialog");
|
||||
}
|
||||
|
||||
public void chooseFilePath() {
|
||||
AppUtil.chooseFile(this, new File(mFilePath), null, OPEN_FILE_MANAGER_CODE);
|
||||
}
|
||||
|
||||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.start:
|
||||
if (mTaskId == -1) {
|
||||
mTaskId = Aria.upload(this)
|
||||
.loadFtp(mFilePath)
|
||||
.setUploadUrl(mUrl)
|
||||
.sftpOption(getOption())
|
||||
.ignoreFilePathOccupy()
|
||||
.create();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
break;
|
||||
}
|
||||
if (Aria.upload(this).loadFtp(mTaskId).isRunning()) {
|
||||
Aria.upload(this).loadFtp(mTaskId).stop();
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
} else {
|
||||
Aria.upload(this)
|
||||
.loadFtp(mTaskId)
|
||||
.sftpOption(getOption())
|
||||
.resume();
|
||||
getBinding().setStateStr(getString(R.string.stop));
|
||||
}
|
||||
//upload();
|
||||
break;
|
||||
case R.id.cancel:
|
||||
Aria.upload(this).loadFtp(mTaskId).cancel(false);
|
||||
mTaskId = -1;
|
||||
getBinding().setStateStr(getString(R.string.start));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void upload() {
|
||||
List<String> paths = new ArrayList<>();
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/1.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/2.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/3.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/4.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/5.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/6.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/7.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/8.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/9.jpg");
|
||||
paths.add(Environment.getExternalStorageDirectory().getPath() + "/Download/img/img/10.jpg");
|
||||
for (String path : paths) {
|
||||
Aria.upload(this)
|
||||
.loadFtp(path)
|
||||
.setUploadUrl(mUrl)
|
||||
.sftpOption(getOption())
|
||||
.ignoreFilePathOccupy()
|
||||
.create();
|
||||
}
|
||||
}
|
||||
|
||||
private SFtpOption getOption() {
|
||||
SFtpOption option = new SFtpOption();
|
||||
option.login(user, pwd);
|
||||
return option;
|
||||
}
|
||||
|
||||
@Upload.onWait void onWait(UploadTask task) {
|
||||
Log.d(TAG, task.getTaskName() + "_wait");
|
||||
}
|
||||
|
||||
@Upload.onPre public void onPre(UploadTask task) {
|
||||
getBinding().setFileSize(task.getConvertFileSize());
|
||||
}
|
||||
|
||||
@Upload.onTaskStart public void taskStart(UploadTask task) {
|
||||
Log.d(TAG, "开始上传,md5:" + FileUtil.getFileMD5(new File(task.getEntity().getFilePath())));
|
||||
}
|
||||
|
||||
@Upload.onTaskResume public void taskResume(UploadTask task) {
|
||||
Log.d(TAG, "恢复上传");
|
||||
}
|
||||
|
||||
@Upload.onTaskStop public void taskStop(UploadTask task) {
|
||||
getBinding().setSpeed("");
|
||||
Log.d(TAG, "停止上传");
|
||||
}
|
||||
|
||||
@Upload.onTaskCancel public void taskCancel(UploadTask task) {
|
||||
getBinding().setSpeed("");
|
||||
getBinding().setFileSize("");
|
||||
getBinding().setProgress(0);
|
||||
Log.d(TAG, "删除任务");
|
||||
}
|
||||
|
||||
@Upload.onTaskFail public void taskFail(UploadTask task) {
|
||||
Log.d(TAG, "上传失败");
|
||||
getBinding().setStateStr(getString(R.string.resume));
|
||||
}
|
||||
|
||||
@Upload.onTaskRunning public void taskRunning(UploadTask task) {
|
||||
Log.d(TAG, "PP = " + task.getPercent());
|
||||
getBinding().setProgress(task.getPercent());
|
||||
getBinding().setSpeed(task.getConvertSpeed());
|
||||
}
|
||||
|
||||
@Upload.onTaskComplete public void taskComplete(UploadTask task) {
|
||||
getBinding().setProgress(100);
|
||||
getBinding().setSpeed("");
|
||||
T.showShort(this, "文件:" + task.getEntity().getFileName() + ",上传完成");
|
||||
getBinding().setStateStr(getString(R.string.re_start));
|
||||
}
|
||||
|
||||
@Override protected void dataCallback(int result, Object data) {
|
||||
super.dataCallback(result, data);
|
||||
if (result == ModifyUrlDialog.MODIFY_URL_DIALOG_RESULT) {
|
||||
mModule.updateFtpUrl(this, String.valueOf(data));
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == OPEN_FILE_MANAGER_CODE && resultCode == RESULT_OK) {
|
||||
Uri uri = data.getData();
|
||||
if (uri != null) {
|
||||
mModule.updateFtpFilePath(this, uri.getPath());
|
||||
ALog.d(TAG, String.format("选择的文件路径:%s", uri.getPath()));
|
||||
} else {
|
||||
ALog.d(TAG, "没有选择文件");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,31 @@ public class UploadModule extends BaseViewModule {
|
||||
return liveData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Ftp上传信息
|
||||
*/
|
||||
LiveData<UploadEntity> getSFtpInfo(Context context) {
|
||||
//String url = AppUtil.getConfigValue(context, FTP_URL_KEY, "ftp://9.9.9.72:2121/aab/你好");
|
||||
//String filePath = AppUtil.getConfigValue(context, FTP_PATH_KEY,
|
||||
// Environment.getExternalStorageDirectory().getPath() + "/Download/AndroidAria.db");
|
||||
String url = "ftp://9.9.9.72:22/aab/你好";
|
||||
String filePath = "/mnt/sdcard/QQMusic-import-1.2.1.zip";
|
||||
|
||||
UploadEntity entity = Aria.upload(context).getFirstUploadEntity(filePath);
|
||||
if (entity != null) {
|
||||
uploadInfo = entity;
|
||||
AppUtil.setConfigValue(context, FTP_URL_KEY, uploadInfo.getUrl());
|
||||
AppUtil.setConfigValue(context, FTP_PATH_KEY, uploadInfo.getFilePath());
|
||||
} else {
|
||||
uploadInfo = new UploadEntity();
|
||||
uploadInfo.setUrl(url);
|
||||
uploadInfo.setFilePath(filePath);
|
||||
}
|
||||
|
||||
liveData.postValue(uploadInfo);
|
||||
return liveData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新Url
|
||||
*/
|
||||
|
||||
@@ -104,6 +104,7 @@ public class CommonModule extends BaseViewModule {
|
||||
R.drawable.ic_ftp,
|
||||
R.drawable.ic_ts,
|
||||
R.drawable.ic_live,
|
||||
R.drawable.ic_sftp,
|
||||
R.drawable.ic_sftp
|
||||
};
|
||||
int i = 0;
|
||||
|
||||
@@ -44,14 +44,14 @@
|
||||
tools:context=".core.download.SingleTaskActivity"
|
||||
>
|
||||
|
||||
<include layout="@layout/layout_bar"/>
|
||||
<include layout="@layout/layout_bar" />
|
||||
|
||||
<com.arialyy.simple.widget.SvgTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
bind:iconClickListener="@{() -> viewModel.chooseUrl()}"
|
||||
bind:svg_text_view_icon="@drawable/ic_modify"
|
||||
bind:text="@{@string/url(url)}"
|
||||
@@ -61,8 +61,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginRight="16dp"
|
||||
bind:iconClickListener="@{() -> viewModel.chooseFilePath()}"
|
||||
bind:svg_text_view_icon="@drawable/ic_choose_file"
|
||||
bind:text="@{@string/file_path(filePath)}"
|
||||
@@ -76,13 +76,23 @@
|
||||
bind:stateStr="@{stateStr}"
|
||||
/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatSeekBar
|
||||
android:id="@+id/pb"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
|
||||
|
||||
<FrameLayout
|
||||
android:background="@color/white"
|
||||
android:id="@+id/video_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="200dp"
|
||||
android:layout_marginTop="16dp"
|
||||
/>
|
||||
android:background="@color/white"
|
||||
>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
83
app/src/main/res/layout/activity_sftp_upload.xml
Normal file
83
app/src/main/res/layout/activity_sftp_upload.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:bind="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
<data>
|
||||
<variable
|
||||
name="fileSize"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="speed"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="progress"
|
||||
type="int"
|
||||
/>
|
||||
<variable
|
||||
name="url"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="filePath"
|
||||
type="String"
|
||||
/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="com.arialyy.simple.core.upload.SFtpUploadActivity"
|
||||
/>
|
||||
<variable
|
||||
name="stateStr"
|
||||
type="String"
|
||||
/>
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
|
||||
<include layout="@layout/layout_bar"/>
|
||||
|
||||
<com.arialyy.simple.widget.SvgTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
bind:iconClickListener="@{() -> viewModel.chooseUrl()}"
|
||||
bind:svg_text_view_icon="@drawable/ic_modify"
|
||||
bind:text="@{@string/url(url)}"
|
||||
/>
|
||||
|
||||
<com.arialyy.simple.widget.SvgTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
bind:iconClickListener="@{() -> viewModel.chooseFilePath()}"
|
||||
bind:svg_text_view_icon="@drawable/ic_choose_file"
|
||||
bind:text="@{@string/file_path(filePath)}"
|
||||
/>
|
||||
|
||||
<include
|
||||
layout="@layout/layout_content_single"
|
||||
bind:fileSize="@{fileSize}"
|
||||
bind:progress="@{progress}"
|
||||
bind:speed="@{speed}"
|
||||
bind:stateStr="@{stateStr}"
|
||||
/>
|
||||
|
||||
|
||||
<!-- <com.arialyy.simple.widget.CodeView-->
|
||||
<!-- android:id="@+id/code_view"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="match_parent"-->
|
||||
<!-- />-->
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
@@ -41,6 +41,7 @@
|
||||
<item>M3U8 点播文件下载</item>
|
||||
<item>M3U8 直播文件下载</item>
|
||||
<item>SFTP 下载</item>
|
||||
<item>SFTP 上传</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="main_items_desc">
|
||||
@@ -53,6 +54,7 @@
|
||||
<item>下载M3U8点播文件</item>
|
||||
<item>下载M3U8直播文件</item>
|
||||
<item>SFTP单文件下载</item>
|
||||
<item>SFTP单文件上传</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="download_items">
|
||||
|
||||
Reference in New Issue
Block a user