Ответы пользователя по тегу Android
  • Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 1?

    @AleksandrFl Автор вопроса
    файл applikation.mk - добавить
    APP_PLATFORM := android-16
    В AndroidManifest.xml
    добавляем следующее:
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28"/>
    Ответ написан
    Комментировать
  • Как сделать локальную базу данных для android studio и сразу заполнить ее данными из csv или xml?

    @AleksandrFl Автор вопроса
    Установить Python, PyCharm (триал версию). создать там проект, перекинуть туда этот файл:
    href=https://yadi.sk/d/A6_iVd1QY5HdRA
    выставить кодировку
    5f64dcd9845d9500511561.jpeg
    затем, во вкладке Database создать базу данных SQlite (или открыть файл .db другой базы данных), правой кнопкой мыши импортировать файл csv, который уже в кодировке и сделать, как на изображении ниже
    5f64de034da78760910338.jpeg
    и все, заполненная база данных готова,
    5f64dedd0de56460393107.jpeg
    обязательно прописываем id (создаем поле в каждой таблице) с autoincrement и Primary Key (PK)
    так же можно сделать связи (автоматически создаст таблицу)
    пример связывания таблицы один ко многим.
    1. создаем таблицу phone_test, прописываем id (autoincrement, PK)
    5f64dffcddaca577178729.jpeg
    2. переходим в первую таблицу и модифицируем колонку home_telephone
    должно получиться так:
    5f64e0db8b837598285187.jpeg
    все, две таблицы связаны, во вкладке консоль прописываем тестовый запрос
    5f64e1768dcce565953036.jpeg
    пример запроса Foreign Key Один ко многим
    SELECT pt.id, pt.phone, pt.column_2 FROM TemplateImportEmpl LEFT JOIN phone_test pt on pt.id = TemplateImportEmpl.home_telephone

    видим результат
    5f64e211e7cd2954844133.jpeg

    Если надо сделать из сложного XML файла таблицу CSV для любой базы данных.
    допустим есть такой XML файл и надо сделать таблицу CSV
    <?xml version="1.0" encoding="UTF-8"?>
    <services>
        <strategy odn="149" name="kv" date="2020-11-18">
            <post>eVoting Booth</post>
            <inf>
                <tag id="10" er="er1"/>
                <tag id="14" er="er1"/>
                <tag id="11" er="er2"/>
                <tag id="12" er="er3"/>
                <tag id="13" er="er4"/>
            </inf>
        </strategy>
        <strategy odn="150" name="vk" >
            <post>Library</post>
            <inf>
                <tag id="10" er="er1"/>
                <tag id="13" er="er4"/>
            </inf>
        </strategy>
    </services>


    вот код для создания таблицы с вытаскиванием тегов и заполнением пропусков в XML
    from lxml import etree
    
    import pandas as pd
    
    
    trree = etree.parse("input_file.xml")
    
    table = trree.xpath('/services/strategy/inf/tag')
    tableoutput = []
    for i in table:
        ig = i.xpath('./@er') #доступ к тегам и распечатка тегов, доступ к post
        tableoutput+= ig
    print("поля в будущей таблице: ", set(tableoutput), "сменить таблицу (экс)")
    
    id = []
    counttag = 0
    minsec = []
    minseccel = []
    counter1musttwo = []
    tagnull = []
    identifie = trree.xpath('/services/strategy/inf')
    for c in identifie:
        counttag +=1
        ct = c.xpath('./tag')
        print ("количество тегов в",counttag, "inf: ", len(ct))
        if (len(ct) == 0):
            tagnull += "TAG = 0; inf №", counttag
            print("найден inf с Количеством тегов = 0")
        for c1 in ct:
            ct1 = c1.xpath('./@er')
            ct2 = c1.xpath('./@id')
            print("распечатываем er: ", ct1)
            if (ct1 == ['er1']):
                id += ct2
            minsec += ct1
            minseccel += ct1
        print("кол-во er1 в",counttag, "inf: ", minsec.count("er1"))
        if (minsec.count("er1") >= 2):
            counter1musttwo += "er1 > 2; inf №",counttag, "; кол-во er1", minsec.count("er1")
            print("найден inf с er1 больше 2")
        print("   \n ")
        minsec = []
    
    identifie = trree.xpath('/services/strategy')
    for re in identifie:
        reos = re.xpath('./post/text()')
        print("доступ к post", reos)
    #выше мы подсчитали все элементы tag
    #делаем пример таблицы csv если каких то полей не хватает поле дата не постоянно
    print("\n")
    strategy = trree.xpath('/services/strategy')
    squares = []
    for rv in strategy:
        noner = rv.xpath('./@date')
    
        if (noner == []):
            noner = ['not found']
        squares += noner
    print(squares)
    postoutput = []
    for re in strategy:
        reos = re.xpath('./post/text()')
        if (reos == []):
            reos = ['not found']
        postoutput+= reos
    print(postoutput)
    
    id = trree.xpath('/services/strategy/@odn')
    name = trree.xpath('/services/strategy/@name')
    
    df = pd.DataFrame({
        "Id": id,
        "Name": name,
        "Data": squares,
        "Post": postoutput
    })
    
    df.to_csv("out.csv", sep="|", index=None)
    #файл готов


    в консоле:
    5f64f695eaca5139083672.jpeg
    Ответ написан
  • Стоит ли использовать паттерн MVP в Android разработке?

    @AleksandrFl
    ниже простой рабочий пример приложения c библиотекой viewPager2 + mvp moxy
    href=https://yadi.sk/d/LhmZqokWi0uaQQ?w=1
    @InjectPresenter
        lateinit var mainPresenter: MainPresenter
    
        @ProvidePresenter
        internal fun provideSettingsPresenter(): MainPresenter {
            return MainPresenter()
        }

    override fun showDialog() {
            //TODO("Not yet implemented")
            Toast.makeText(this, "sdfgvsdfgv", Toast.LENGTH_LONG)
            alertDialog = AlertDialog.Builder(this)
                .setTitle("Title")
                .setMessage("Message")
                .setOnDismissListener { mainPresenter.onHideDialog() }
                .show()
        }
    Ответ написан
    Комментировать
  • Какие распределенные базы данных существуют для приложений на Android?

    @AleksandrFl
    локальную базу данных можно сделать с помощью библиотеки Room (удобней Sqlite) и Dagger. Ниже простой рабочий
    href="https://yadi.sk/d/9Y7JeDhSHNODTQ?w=1"
    пример приложения Room- локальная база данных, Dagger - подключить любой класс
    package com.example.myapplicationroom.data.db.dbInstance
    
    import android.content.Context
    import androidx.room.Database
    import androidx.room.Room
    import androidx.room.RoomDatabase
    import com.example.myapplicationroom.data.db.dao.EmployeeDao
    import com.example.myapplicationroom.data.db.entity.Employee
    
    @Database(
        entities = [
            Employee::class],
        version = 1
    )
    abstract class LocalDatabase: RoomDatabase() {
        abstract fun getEmployeeDao(): EmployeeDao
    
    
    
    
    
        companion object {
            @Volatile
            private var INSTANCE: LocalDatabase? = null
    
            fun getDatabase(context: Context): LocalDatabase {
                val tempInstance = INSTANCE
                if (tempInstance != null) {
                    return tempInstance
                }
                synchronized(this) {
                    val instance = Room.databaseBuilder(
                        context.applicationContext,
                        LocalDatabase::class.java,
                        "NoteDatabase"
                    ).fallbackToDestructiveMigration().build()
                    // ^^^ Без миграции ^^^
    
                    INSTANCE = instance
                    return instance
                }
            }
        }
    }
    Ответ написан
    Комментировать
  • Android Studio project from GitHub: import or download?

    @AleksandrFl
    в терминале
    cd c://path переход в каталог, который нужно перенести на github
    git remote set-url origin git@github.com:Sasha/repository.git назначаем репозиторий
    git init 
    git add .
    git commit -m "Init" коммитим
    git pull origin master --allow-unrelated-histories проверяем на соответствие
    git push origin master отправляем папку

    для android studio
    чтобы отправить проект на git
    нужно настроить ssh
    ssh-keygen -t rsa -b 4096 -C "fl@gmail.com"
    eval $(ssh-agent -s)
    clip < ~/.ssh/id_rsa.pub
    add ssh to github
    C:\Users\Rumb\.ssh PASSWORD

    и прописать код SSH в настройках GitHub
    ~/.ssh/id_rsa.pub код тут
    необходимо перекинуть как на изображении ниже всю папку в DefaultChangeList5f4d4dc9e6f5c162537158.jpeg
    и сделать commit
    затем 5f4d4e2f24601451842289.jpeg
    Ответ написан
    Комментировать