Хобрук: Ваш путь к мастерству в программировании

как и вводить файлы в apk, которые можно прочитать с C++?

Я использую JNI для разработки своего приложения, и есть два файла .dat, используемые в качестве входных файлов на уровне C++. В настоящее время я загружаю эти два файла на мобильные устройства через adb, прежде чем открывать соответствующее приложение. Я думаю, что есть лучшее решение, чтобы предотвратить отправку двух файлов на мобильные устройства.


Ответы:


1

попробовав несколько решений, я решил это, объединив три решения и код, показанный ниже. Перед использованием кода вам необходимо создать папку с именем «assets» параллельно папке «res». Таким образом, вы можете прикрепить входной файл, который вы можете использовать, к apk, и при первой установке apk он автоматически сохранит файлы по определенному пути на целевом устройстве.

public class CameraPreviewActivity extends AppCompatActivity
    implements CameraPermissionHelper.CameraPermissionCallback {


SharedPreferences prefs = null;


public static String TAG = "CameraPreviewActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    prefs = getSharedPreferences("com.yourcompany.yourapp", MODE_PRIVATE);

}




@Override
protected void onDestroy() {
    super.onDestroy();

}

@Override
protected void onResume() {
    super.onResume();

    if(prefs.getBoolean("firstrun", true)){
        prefs.edit().putBoolean("firstrun", false).commit();
        try {
            final InputStream input = getResources().getAssets().open("face_model.dat");

            try {
                File UPLOAD_DIR = new File("/sdcard");
                File file = new File(UPLOAD_DIR, "face_model.dat");
                OutputStream output = new FileOutputStream(file);
                try {
                    try {
                        byte[] buffer = new byte[4 * 1024]; // or other buffer size
                        int read;

                        while ((read = input.read(buffer)) != -1) {
                            output.write(buffer, 0, read);
                        }
                        output.flush();
                    } finally {
                        output.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace(); // handle exception, define IOException and others
                }
            } finally {
                input.close();
            }

        }catch (IOException e){
           e.printStackTrace();
        }

        try {
            final InputStream input = getResources().getAssets().open("shape_pred.dat");

            try {
                File UPLOAD_DIR = new File("/sdcard");
                File file = new File(UPLOAD_DIR, "shape_pred.dat");
                OutputStream output = new FileOutputStream(file);
                try {
                    try {
                        byte[] buffer = new byte[4 * 1024]; // or other buffer size
                        int read;

                        while ((read = input.read(buffer)) != -1) {
                            output.write(buffer, 0, read);
                        }
                        output.flush();
                    } finally {
                        output.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace(); // handle exception, define IOException and others
                }
            } finally {
                input.close();
            }

        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

}

25.08.2017
Новые материалы

Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

AST для разработчиков JavaScript
TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

5 проектов на Python, которые нужно создать прямо сейчас!
Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..