|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Java / Gridview para mostrar imágenes storage Firebase
|
en: 17 Diciembre 2021, 19:19 pm
|
Buenas a todos, Estoy desarrollando un juego de puzzles para android y me gustaría que las imágenes que tiene el usuario para elegir el puzzle en lugar de ser de una carpeta local, fuesen de una carpeta de firebase. Actualmente, estas imágenes tienen un adaptador para que aparezcan en un gridview con un marco etc. Pero no consigo saber como poder dar acceso al imageAdapter y a la clase Main para que muestre las imágenes de la carpeta como hace ahora en local pero con los archivos de firebase. He buscado el multitud de sitios pero no encuentro nada similar. ¿Alguien puede echarme una mano? Actualmente tengo el imageAdapter y el MainActivity así; ImageAdaptaer; mContext = c; am = mContext.getAssets(); try { files = am.list("img"); e.printStackTrace(); } }
private Bitmap getPicFromAsset (ImageView imageView, String assetName ) { // Obtener las dimensiones de la Vista int targetW = imageView.getWidth(); int targetH = imageView.getHeight(); if(targetW == 0 || targetH == 0) { // la vista no tiene dimensiones establecidas return null; } try { // Obtener las dimensiones del mapa de bits BitmapFactory.Options bmOptions = new BitmapFactory.Options(); bmOptions.inJustDecodeBounds = true; BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions); int photoW = bmOptions.outWidth; int photoH = bmOptions.outHeight; // Determine cuánto reducir la imagen int scaleFactor = Math. min(photoW /targetW, photoH /targetH ); is.reset(); // Decodifica el archivo de imagen en un mapa de bits de tamaño para llenar la vista bmOptions.inJustDecodeBounds = false; bmOptions.inSampleSize = scaleFactor; bmOptions.inPurgeable = true; return BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions); e.printStackTrace(); return null; } }
MainActivity; AssetManager am = getAssets(); try { final String[] files = am. list("img"); GridView grid = findViewById(R.id.grid); grid.setAdapter(new ImageAdapter(this)); grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView <?> adapterView, View view, int i, long l ) { Intent intent = new Intent(getApplicationContext(), PuzzleActivity.class); intent.putExtra("assetName", files[i % files.length]);
Mil gracias por vuestra ayuda.
|
|
|
2
|
Programación / Java / Comparar datos tabla SQLite con variable tipo String
|
en: 28 Noviembre 2021, 21:47 pm
|
Buenas tardes a todos, Estoy realizando una aplicación que trabaja con SQLite. He conseguido crear una consulta que me muestre todos los datos de la tabla y haga de "Ranking" de puntuaciones. Ahora me gustaría poder hacer una lectura de una de las columnas de la tabla y en el caso de que el tiempo de la partida sea menor a los que estén registrados genere una notificación. ¿Cómo podría hacer la parte del código que comparase el tiempo de la partida actual con los tiempo guardados en la tabla de la BD?. El tiempo que se utiliza en la aplicación y el que se registra en la tabla está en String. Para visualizar la tabla completa tengo la consulta realizada de la siguiente forma. //Método para recoger los datos de la tabla. String columnas [] = {"id", "nombre", "tiempo"}; Cursor c = this. getReadableDatabase(). query(TABLE_JUGADORES, columnas, null, null, null, null, "tiempo"); return c; } //Método para mostrar los datos de la tabla. private void showResultados() { db = new AdminSQLiteOpenHelper(this); item = new ArrayList<String>(); String title = "", content = ""; if (c.moveToFirst()) { do { title = c.getString(1); content = c.getString(2); item.add(title + " " + content); } while (c.moveToNext()); } ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, item); lista.setAdapter(adaptador); }
Los datos de tiempo los almaceno de la siguiente forma: registroActual=cronometro.getText().toString();
Mil gracias por la ayuda, saludos.
|
|
|
3
|
Programación / Java / Programar botón de inicio y back Android para cerrar servicio en segundo plano.
|
en: 18 Noviembre 2021, 12:50 pm
|
Buenos días a todos! Estoy realizando una aplicación a través de Android Studio en la cual he implementado que pueda sonar música de fondo a través de un servicio. A lo largo de toda la aplicación he implementado que mediante una opción del ActionBar o a través del menú principal puedas activar o desactivar esta música. Pero cuando le doy al botón de inicio y el teléfono sale de la aplicación (aun que esta se sigue ejecutando en segundo plano) la música continua sonando... Estoy intentando ver como puedo parar el servicio si el usuario pulsa el botón de Home.. pero por más que he probado los siguientes métodos, no consigo que funcione como me gustaría. ¿Como podría hacer la implementación para que si el usuario pulsa el botón de inicio del telefono y vuelve al menú principal la música deje de sonar? Los métodos que he probado son estos; Con este código, consigo que al pulsar el botón de home la música se pare.. pero tambien se para en el momento que toco cualquier botón de la aplicación, aunque no sea el de Home. ¿Habría alguna forma de programarlo de tal forma que solo actuase con el botón de HOME? protected void onUserLeaveHint() { super.onUserLeaveHint(); Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show(); Log.i("Home button Pressed!", "Yes"); stopService(new Intent(MenuPrincipal.this,ServicioMusica.class)); }
Con este código he conseguido cumplir con cerrar el servicio al pulsar el botón de BACK, pero al pulsar el botón HOME el programa no hace nada. public boolean onKeyDown (int keyCode, KeyEvent event ) { Log.d("Test", "Back button pressed!"); } else if(keyCode == KeyEvent. KEYCODE_HOME) { stopService(new Intent(MenuPrincipal.this,ServicioMusica.class)); } return super.onKeyDown(keyCode, event); }
Mil gracias por vuestra ayuda, saludos!!
|
|
|
4
|
Programación / Java / Ayuda en Java con Android Studio - Habilitar cuandro de dialogo al terminar partida
|
en: 22 Octubre 2021, 20:32 pm
|
Buenas tardes a todos, Estoy haciendo un juego de puzzles y necesito que cuando termine la partida se abra un cuadro de dialogo sin necesidad de tener que darle a ningún botón ni cerrar la actividad. He conseguido poder hacer una ventana emergente al terminar la partida, pero no consigo que cumpla con todas las funcionalidades que necesito y me gustaría que saliera un cuadro de dialogo con más prestaciones. He estado buscando info y he conseguido que el cuadro de dialogo se abra si inserto un botón, pero no puedo meter un botón para guardar la partida ya que lo que quiero es que al terminar la partida aparezca directamente el cuadro de dialogo y se le solicite al jugador su nombre para guardarla y se informe de la puntuación (el cuadro de dialogo ya lo tengo con estas prestaciones). Cómo puedo llamar al cuadro de dialogo para que se abra sin necesidad de que haya un botón para ello? Os adjunto la parte del código que llama al cuadro de dialogo a través del botón. ¿Cómo podría hacerlo para que realizase la misma acción al terminar la partida en lugar de habilitando el botón? Button botonGuardarPartida = (Button) findViewById (R. id. botonGuardarPartida); botonGuardarPartida.setOnClickListener(new OnClickListenerGuardarPartida());
Mil gracias como siempre por vuestra ayuda, saludos.
|
|
|
5
|
Programación / Scripting / Ayuda con subprocess.Popen stdout=subprocess.PIPE
|
en: 3 Marzo 2021, 13:15 pm
|
Buenos días a todos, Estoy empezando con la ejecución de programas en python y no consigo entender correctamente que es lo que realiza el programa siguiente.. import subprocess # pipe.py p = subprocess.Popen(["echo","Ejemplo de procesos en python.."], stdout=subprocess.PIPE) print (p.communicate())
Por las pruebas de ejecución que he realizado a través de Linux, veo que el programa imprime por pantalla un mensaje en el terminal.. pero no consigo entender realmente que función hace stdout=subprocess.PIPE, ni porque a la hora de ejecutar el programa en el IDE imprime por pantalla (b'Ejemplo de procesos en python..\n', None). Entiendo que el primer argumento de Popen "echo" es un comando de Linux que imprime la salida por pantalla de la frase "Ejemplo de procesos en python..", pero no entiendo porque en la ejecución aparece el texto entre parentesís, la b en el inicio, el salto de línea \n y el None al final de la ejecución... He buscado información sobre esto pero no encuentro nada para poder entenderlo correctamente.. ¿Alguien puede ayudarme? Mil gracias por la ayuda, saludos.
|
|
|
6
|
Programación / Java / Ayuda con JOptionPane mostrar datos en una única ventana.
|
en: 9 Diciembre 2020, 19:27 pm
|
Buenas tardes a todos, Estoy desarrollando una aplicación que solicita y muestra los datos por pantalla a través de JOptionPane con ventanas y no por consola como he hecho siempre. He conseguido poner todo más o menos correctamente, pero a la hora de listar la información introducida por el usuario, el programa me crea una ventana para cada información introducida y me gustaría que sacara toda la información a la vez. Ejemplo: Si he dado de alta 2 clientes con todos sus datos, que abra una única ventana con los datos de ambos clientes y no una ventana por cliente. ¿Hay alguna forma de que el programa pueda realizar esta función? Os pongo en código como lo tengo actualmente. /**Método para dar de alta a nuevos clientes en la base de datos del hotel. */ public void altaCliente(){ String dni = JOptionPane. showInputDialog("NUEVO CLIENTE: \n" +"Escriba el DNI del cliente: \n\n"); /**Llamada al método comprobarDni para comprobar que el cliente que se está dando de alta no ha sido ya creado. */ Cliente cliente = comprobarDni(dni); /** Si el dni introducido no coincide con el de ningún cliente existente devuelve null y continua con el proceso de alta del cliente nuevo. En caso que el dni introducido ya exista significa que el cliente ya ha sido registrado previamente y nos devolverá un mensaje de error. */ if(cliente == null) { nombre = JOptionPane. showInputDialog("Introduzca el nombre del cliente: "); apellidos = JOptionPane. showInputDialog("Introduzca los apellidos del cliente: "); telefono = JOptionPane. showInputDialog("Introduzca el núm. de teléfono del cliente: "); clientes.add(new Cliente(nombre,apellidos,dni,telefono)); JOptionPane. showConfirmDialog(null, "Se ha añadido el siguiente cliente en la base de datos: \n" + "\nNombre: " +nombre +"\nApellidos: " +apellidos +"\nDni: " +dni + "\nTeléfono: "+telefono); } else { JOptionPane. showMessageDialog(null, "El DNI introducido ya existe. El cliente que está dando de alta ya se encuentra registrado en el sistema.", "ERROR", 0); } } /** Método para comprobar que si dni introducido por teclado coincide con el de agún cliente ya registrado. */ public Cliente comprobarDni (String dni ){ for (int i=0; i < clientes.size(); i++){ Cliente cliente = clientes.get(i); if (dni.equals(cliente.getDni())){ return cliente; } } return null; } /** Método para listar los clientes registrados. */ public void mostrarClientes() { JOptionPane. showMessageDialog(null, "LISTA DE CLIENTES: "); for (int i=0; i < getClientes().size(); i++) { Cliente aux = getClientes().get(i); JOptionPane. showMessageDialog(null,aux. getNombre() + " " + aux. getApellidos() + ", Dni." + aux. getDni() + ", Telf." + aux. getTelefono()); } }
Me gustaría que en la Función mostrarClientes() pudiera crear una única ventana que fuera LISTA CLIENTES y en ella aparecieran todos los clientes que se han introducido y no que primero aparezca la ventana de LISTA CLIENTES, Cliente 1 y sus datos, cliente 2 y sus datos por ejemplo. Mil gracias por la ayuda, saludos.
|
|
|
7
|
Programación / Programación C/C++ / Hacer Ping en codigo C y que cree un txt con los resultados de cada IP
|
en: 17 Noviembre 2020, 17:05 pm
|
Buenas tardes a todos, Estoy realizando un trabajo y necesito crear un programa que aparte de abrir, leer, modificar y crear archivos .txt haga un ping y esta información la almacene en un nuevo txt. He conseguido crear el archivo .txt desde cmd haciendo ping directamente, pero no soy capaz de codificar el código en el programa de C para que el programa directamente ejecute el ping y guarde la información en un nuevo .txt ¿Podéis ayudarme? Tengo que crear las siguientes funciones y no sé por donde empezar  1. Una función que lea el contenido de un archivo .txt con diferentes direcciones ip, en la que la ruta del archivo se solicitará al usuario por pantalla. La ruta y nombre del archivo tienen que ser preguntados al usuario y visualizados por pantalla. Por último, el programa debe lanzar un ping para cada una de las direcciones ip del archivo e informar cuales de ellas responden correctamente a este comando. Mil gracias por la ayuda, saludos.
|
|
|
|
|
|
|