Van icon

ANDROID Udemy

Links


    // EJER

    


    //  ANUNCIOS
    LOs anuncios solo se pueden cargar y mostrar. No se puede cargar otro si el que se ha cargado no se ha mostrado
    Se usa en GoogleAdmob: https://admob.google.com/intl/es-419/home/
    pero para ello es necesario tener Google Adsense activado necesario: https://accounts.google.com/v3/signin/accountchooser?continue=https%3A%2F%2Fadsense.google.com%2Fadsense%2Fsignup%2Fcreate%3Fhl%3Des%26referer%3Dhttps%3A%2F%2Fwww.google.com%2F%26sac%3Dtrue&faa=1&hl=es&service=adsense&flowName=GlifWebSignIn&flowEntry=AccountChooser&dsh=S-751654272%3A1746192488728877

    Guide: https://developers.google.com/admob/android/quick-start?hl=es#import_the_mobile_ads_sdk

    Al lanzar app no incluir publicidad porque a los usuarios no les gusta. Añadir más tarde

    ADD THREE THINGS IN YOUR APP:
    In the on create function add initAds()
    private fun initAds() {
    Thread(
    Runnable {
    // Initialize the Google Mobile Ads SDK on a background thread.
    MobileAds.initialize(this, { initializationStatus -> })
    })
    .start()
    }

    in manifest:
    Get the code from Admob
    <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-ca-app-pub-{XXXXXXXXX...XXX}" />

    in gradle dependencies (and sync)
    implementation("com.google.android.gms:play-services-ads:24.2.0")


    4 tipos de anuncions
    -Banner: rectangle Ad
    -Intersticial: full screen AD
    -Nativo: personalizable
    -Bonificado: recompensa

    BANNER: 
    https://developers.google.com/admob/android/banner?hl=es
    val adView = AdView(this)
     adView.adSize = AdSize.BANNER
    adView.adUnitId = "ca-app-pub-XXXXX.XXX"
    var lyAdsBanner = findViewById<LinearLayout>(R.id.lyAdsBanner)
        lyAdsBanner.addView(adView)
        val adRequest = AdRequest.Builder().build()
        adView.loadAd(adRequest)

    INTERSTICIAL
    https://developers.google.com/admob/android/interstitial?hl=es
    

    GOOGLE ADMOB
    Generar Propios IDS: 
    - Añadir app
    - Ir a tipo de anuncio: banner, intersticial y aparece el ID o código (kotlin y manifest !!)


    //  PASARELAS DE PAGOS
    Tarjeta Crédito - Stripe
    New Activity
    NodeJs: https://medium.com/@adnanrahic/hello-world-app-with-node-js-and-express-c1eb7cfa8a30
    Servidor Local. Se crea una carpeta para crear: npm init
    entry point: server.js (recomendado para Stripe)
    npm install express --save
    npm install --save stripe
    crear n uievo archivo en la carpeta: server.js y añadir codigo de aqui: https://docs.stripe.com/payments/quickstart?platform=android&lang=node
    Se puede abrir localhost:4242 para ver
    https://docs.stripe.com/payments/quickstart?lang=java


    CheckoutActivity.kt copy code
    build.gradle add dependencies and sync !!!
    Follow tutorial

    Manifest: 
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


    //HEROKU
    Crear cuenta
    Install CLI & GIT
    instalar. Deploying XXXX app on heroku (Node js, python, php)
    update package json con engines 
    server añadir
    en la carpeta npm i -g heroku
    lanzar: heroku local web
    añadir a git - 
        git init 
        git add .
        git commit -m "title"

    
    heroku login - abre ventana de heroku
    crear project: heroku create {name}
    git push heroku master
    guardar https://xxxxxx  será usada en el proyecto en Backend URL de checkout activity
    heroku open para comprobar las https

    


    // SHARED PREFERENCES
    private lateinit var sharedPreferences: SharedPreferences
    private lateinit var editor: SharedPreferences.Editor

    


    //  ACTUALIZACIONES
    Mejor en Base de datos: Niveles

    


    // CONTROLAR ORIENTACION
    Evitar que se cambie a vertical: android:screenOrientation="portrait"

    


    // SONIDOS
    Create en res android: resource directory raw
    crear variable de tipo media player para acceder a ellos - private lateinit var mpsound : MediaPlayer
    funcion para 
    private fun initSound(){
    mpsound = MediaPlayer.create(this, R.raw.sound)
    mpsound.isLooping = false
    }

    desde otra spartes del codigo mpsound.start()


    


    //  APK
    Build APK y Bundle
    Manifest: 
    android:versionName= "1.0"
    android:versionCode= "1" // cada cambio incrementa
    Por ejemplo 1.1 -> 2, 1.2-> 3

    


    //  METODOLOGIA PROFESIONAL PARA PROYECTOS
    • Estrategia
        - Definir proyecto:  Correctamente por escrito; Lo que se entrega debe ser lo especificado
        - Audiencia: Edad, Sexo, Nacionalidades. Si el cliente tiene página web tendrá analytics para saber. Si ndo, duda. Paleta Colores
        - Objetivo: viralizar, dinero, conseguir emails
        - Especificaciones técnicas: Android o IOS? Nativo? Web? Minimo API de los teléfonos
        - Inventario de contenido
        - Recursos: quizás ya tienen usuarios en web, quizás tienen bbdd en sql, nosql, excel, logotipo, color corporativo, imágenes
        - Timeline: Dar margen, doble de los cálculos. Si lo haces antes de previsto quedas mejor. Si surge algún imprevisto se puede manejar. Cualquier retraso son balas para el cliente pedirte cosas en el futuro. Fecha de versión de prueba: Varios prototipos. Se explica el trabajo.: Diseño gráfico, base de datos, analytics. Si sacas una versión y estás orgulloso es que la has sacado tarde. Si la sacas y hay que mejorar cosas, está bien.
        - Presupuesto: app más caro que web. 1/3 del salario minimo. 350€. Muy particular. Cada semana 350€. Salario Promedio/3 para algo básico, Promedio/2 por semana para algo personalizado. Adelanto del 50%
    • Planificacion
        - Ventana inicio sesión: Usuario contraseña, aceptar terminos y condiciones, botones, 
        - Lluvia de Ideas: ser caótico ok, apunta todas, base de datos, inspirate en otras, innovador si, raro no
        - Arquitectura: (MVC, MVP, MVVVM) Base Datos: SQL-NoSQL
        - Layouts: Dibujos de cada ventana en modo vertical y horizontal. Se pueden crear variaciones. No hacer lo mismo en la app y la web. First Mobile. Distintos contenidos.
        - UX: Usabilidad. Mejora todo. Pocos clics en funcionalidades básicas. Don't make me think ! Lo más importante, más grande, claro y cerca
        - Mockups: Ninja Mockup
    • Diseño
        - colores: Colorhunt, colord. DOs: modo light y modo oscuro, psicologia del color
        - Icono
        - Fuente: Palo (fuerza o delicadeza), bordes
        - Diseño Activities
        - Animaciones
        - Test de UX
        - Plantillas: 2-3 Diseños
    • Desarrollo
        - Lenguaje y framework
        - Base de Datos: SQL vs NoSQL
        - Diseño Visual: añadir imagenes, videos, tipografia, audios
        - Funcionalidades, Ejecucion,
        - Seguridad: no se guarda info sensible en shared preferences. Base de datos: encriptación de datos
    • Lanzamiento
        - Test final: Intenta encontrar fallos a lo bruto.
        - Play Store
        - analytics: google play console: Campañas. comportamiento: mejoras
        - Garantia
        - Entrenamiento Personal: manual, video, dedica el tiempo necesario
    • Mantenimiento: la parte que más dinero puede dar
        - Soporte: cuotas, control de datos, 
        - Actualizaciones: diseño por moda, funcionalidad, contenido


    


    //  TOOLBAR Y MENU NAVEGACION

    Toolbar:
    New layout: Coordinator layout  > AppBar > Toolbar
    xml view: include layout="@layout/app_bar_main"

    MENU
    new folder in res= menu then xml menu
    xml: menu / group / item (can be used submenus)
    com.google.android.material.navigation.NavigationView
    app:menu="menu/activity_menu"




    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    // 

    


    //