11.- Crear una Linterna para Android - Subir aplicación al Google Play

Una vez tenemos nuestro archivo APK firmado lo único que nos queda es tener una cuenta de Google y pagar 25$ para poder subir aplicaciones a la tienda de Android, Google Play.


Si deseas volver a ver algún capítulo en concreto del curso el mejor sitio al que puedes ir es aquí.
Te recuerdo que el código de toda la aplicación se puede encontrar en este repositorio de GitHub.
Hasta aquí hemos llegado, la aplicación está terminada y publicada para que todos puedan disfrutarla. ¡Se acabó el ir al baño a oscuras por las noches!
Me gustaría que si habéis llegado hasta aquí, además de donarme voluntariamente unos 2000 o 3000€, os tomarais unos segundos para completar esta encuesta. De esta forma me haréis llegar vuestras opiniones he intentaré mejorar en los siguientes vídeos. Difundir el curso si os ha gustado, gracias a todos :)

5 comentarios :

  1. ¡¡Eres un genio!! Me encanta tu curso, la verdad que me ha servido mucho para mejorar una aplicación que hice hace un tiempo. Mi pregunta es la siguiente porque solo hace que darme fallos o me desaparece la publicidad. ¿Que puede ser?

    Te adjunto detalle, se que es algo de onstart, pero he probado de todo, en otro comentario por que no me lo permite por demasiados caracteres.

    ResponderEliminar
  2. import android.app.Activity;
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;

    import android.content.Intent;
    import android.os.Bundle;
    import android.os.PowerManager;
    import android.os.PowerManager.WakeLock;
    import android.support.v4.app.NotificationCompat;

    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdSize;
    import com.google.android.gms.ads.AdView;


    public class MainActivity extends Activity implements OnClickListener
    {

    private AdView adView;
    private static final String WAKE_LOCK_TAG = "Linterna";
    private static final int NOTIFICATION_ID = 1;
    private Torch torch;
    private WakeLock wakeLock;
    private NotificationManager notificationManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Acceder a la cámara.
    if (!initTorch())
    {
    return;
    }
    // Encender el flash.
    torch.on();

    // Crear adView.
    adView = new AdView(this);
    adView.setAdUnitId("ca-app-pub-7047478078459684/5980075454");
    adView.setAdSize(AdSize.BANNER);

    // Buscar LinearLayout publi
    LinearLayout layout = (LinearLayout)findViewById(R.id.banner);

    // Añadirle adView.
    layout.addView(adView);

    // Iniciar una solicitud genérica.
    AdRequest adRequest = new AdRequest.Builder().build();

    // Cargar adView con la solicitud de anuncio.
    adView.loadAd(adRequest);






    // Cargar interfaz gráfica.
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button_on_off);
    button.setOnClickListener(this);
    // Adquirir el wake lock.
    PowerManager powerManager =
    (PowerManager) getSystemService(POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(
    PowerManager.PARTIAL_WAKE_LOCK, WAKE_LOCK_TAG);
    wakeLock.setReferenceCounted(false);
    if (!wakeLock.isHeld())
    {
    wakeLock.acquire();
    }
    // Iniciar el NotifactionManager.
    notificationManager = (NotificationManager)
    getSystemService(NOTIFICATION_SERVICE);
    // Creamos la notificación.
    createNotification();
    }
    private boolean initTorch()
    {
    try
    {
    // Acceder a la cámara.
    torch = new Torch();
    }
    catch (Exception e)
    {
    // Mostrar mensaje de error al usuario.
    Toast.makeText(this,
    getResources().getString(R.string.text_error),
    Toast.LENGTH_LONG).show();
    // Salir de la aplicación.
    finish();
    return false;
    }
    return true;
    }

    ResponderEliminar
    Respuestas
    1. private void createNotification()
      {
      Intent intent = new Intent(this, MainActivity.class);
      PendingIntent pendingIntent = PendingIntent.getActivity(this,
      0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
      Notification notification = new NotificationCompat.Builder(this)
      .setSmallIcon(R.drawable.logoled)
      .setContentTitle(getResources().getString(R.string.app_name))
      .setContentText(getResources().getString(R.string.notification_text))
      .setOngoing(true)
      .setContentIntent(pendingIntent)
      .build();
      notificationManager.notify(NOTIFICATION_ID, notification);
      }
      private void destroyNotification()
      {
      notificationManager.cancel(NOTIFICATION_ID);
      }
      @Override
      public void onBackPressed()
      {
      super.onBackPressed();
      // Destruir notifiación.
      destroyNotification();
      // Apagar el flash.
      // No es necesario apagar el flash si vamos a cerrar la
      // cámara, se apaga automáticamente.
      torch.release();
      torch = null;
      // Soltar el wake lock.
      wakeLock.release();
      }
      @Override
      public void onClick(View view)
      {
      if (torch.isOn())
      {
      torch.off();
      destroyNotification();
      }
      else
      {
      torch.on();
      createNotification();
      }
      }
      @Override
      public void onPause() {
      adView.pause();
      super.onPause();
      }

      @Override
      public void onResume() {
      super.onResume();
      adView.resume();
      if (torch == null && initTorch())
      {
      wakeLock.acquire();
      }
      }

      @Override
      public void onDestroy() {
      adView.destroy();
      super.onDestroy();

      }

      }

      Eliminar
    2. LOL! Acabo de ver el error, un duplicado al copiar la linea setContentView(R.layout.activity_main);

      Gracias de todas maneras, seguire pendiente de tu blog para ir aprendiendo más y mejor. Ya que lo explicas muy bien! Un Saludo!

      Eliminar
    3. Jajaja me alegro de que hayas podido encontrarlo.
      Apóyate siempre en el log de Android (hay una ventana del eclipse que te lo muestra), en él aparecen todas las excepciones que son lanzadas. Pueden ayudarte muchísimo a averiguar en qué líneas se encuentra el error.

      Gracias por tu apoyo. Un saludo Salva!

      Eliminar