Извините за поздний ответ, но это может быть полезно ... Да, это определенно возможно.Я сделал именно это с Nexus 7 и внешним устройством с процессором ARM.Nexus 7 должен быть рутирован с включенной отладкой по USB.Я использовал wugfresh nexus root toolkit - это было очень просто.
Далее (держитесь за свои места), вы должны написать свое приложение, чтобы использовать протокол YModem.Одним из вариантов является использование Android NDK (Native Development Kit) для компиляции протокола YModem, написанного на C / C ++ (Попробуйте Tixy's ).Вам понадобится cygwin или mingw перед установкой NDK, если вы работаете с Windows.
Итак, допустим, вы используете windows и у вас установлен NDKв c:\android-ndk-r8b-windows\android-ndk-r8b
.Вы можете использовать Eclipse с установленным плагином adt, и, скажем, ваша новая рабочая область для проекта - c: \ android-workspace.Вы можете использовать пакетный файл для выполнения NDK make из вашего проекта (c:\android-workspace\batch.bat
):
C:\android-ndk-r8b-windows\android-ndk-r8b\ndk-build.cmd
PAUSE
Просто убедитесь, что вы экспортируете функции C / C ++, чтобы они могли использоваться вашим приложением JAVA для Android.
Interface.cpp:
#include <string.h>
#include <jni.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ymodem_tx.h"
#include "ymodem_main.h"
extern "C" {
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_ymodemSent( JNIEnv* env, jobject obj, int portNumber, jstring fileName)
{
int status = 0;
if (portNumber >= 0)
{
const char* input = env->GetStringUTFChars(fileName, 0);
status = ymodem_sentFile(portNumber, input);
env->ReleaseStringUTFChars(fileName, input);
}
else
{
status = 0xFF;
}
return status;
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetTotalSize( JNIEnv* env, jobject obj)
{
return ymodem_getTotalSize();
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetTransferredSize( JNIEnv* env, jobject obj)
{
return ymodem_getTransferredSize();
}
JNIEXPORT bool JNICALL Java_com_example_ymupload_MainActivity_YmodemIsSending( JNIEnv* env, jobject obj)
{
return ymodem_bIsSending();
}
JNIEXPORT int JNICALL Java_com_example_ymupload_MainActivity_YmodemGetStatus( JNIEnv* env, jobject obj)
{
return ymodem_uGetStatus();
}
JNIEXPORT jstring JNICALL Java_com_example_ymupload_MainActivity_YmodemGetFileName( JNIEnv* env, jobject obj)
{
return env->NewStringUTF(ymodem_pGetFileName());
}
}
Также убедитесь, что вы поместили этот файл и другие файлы .c
, .cpp
, .h
в папку jni
в папке проекта.Например, c:\android-workspace\prog-name\jni
, вместе с файлом Android.mk
(существует множество других вопросов о стеке для файлов Android.mk
).
Вы можете поместить двоичные файлы, которые хотите записать, в папку на /sdcard/
.Загрузите файловый браузер, чтобы увидеть их.