Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 25/09/13, 17:22:05
Array

[xs_avatar]
jamercues jamercues no está en línea
Miembro del foro
 
Fecha de registro: may 2011
Mensajes: 182
Modelo de smartphone: xperia s
Tu operador: Jazztel
APP linterna

Hola a todos.
Pues de antemano, hace mucho que no me pasaba por aqui y tal, bueno, he vuelto jeje
Os cuento, en el gs estamos aprendiendo a programar en android ahora, se programar en c++, java, php, pyton...
Ahora toca android y estoy haciendo una app simple, muy simple, de una linterna.
Se trata de 2 botones y un texto.
He estado leyendo y para poder utilizar el hardware del telefono, tengo que comprobar si esta disponible en el telefono.
Pero, donde compruebo si esta disponible?
se que tengo que poner esta linea
Código:
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
pero donde? donde declaro los botones y tal en el mainactivity? creo un metodo? tengo que utilizar packageManager, como va? estoy echando un vistazo a la api y no veo ningun ejemplo.
El programa en si ya esta, he puesto los permisos en el xml tambien...
Código:
<permission 
     
     android:name="android.permission.FLASHLIGHT"
     android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
     android:protectionLevel="normal"
     android:label="@string/permlab_flashlight"
     android:description="@string/permdesc_flashlight" />
Alguna ayuda? aun estoy algo perdido.

Os pongo el codigo haber si veis algo raro.
Código:
package com.example.holausuario;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final EditText laFrase = (EditText)findViewById(R.id.frase);
		final Button elBoton = (Button)findViewById(R.id.el_boton);
		final Button elBoton2 = (Button)findViewById(R.id.el_boton2);
		final Camera cam = null;
		final Parameters param = cam.getParameters();
		final PackageInfo context = new PackageInfo;
		
		
		context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
		
	
	elBoton.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View e) {
			laFrase.setText("Linterna Enchufada");
			cam.setParameters(param);
			cam.startPreview();
		}
		});
	elBoton2.setOnClickListener(new OnClickListener(){

		@Override
		public void onClick(View a) {
			laFrase.setText("Linterna apagada");
			cam.setParameters(param);
			cam.stopPreview();
			cam.release();
			
		}
		
	});
}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
Gracias!
Responder Con Cita


  #2  
Viejo 25/09/13, 18:50:59
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

No es que tengas que comprobarlo obligatoriamente, es que si tu app se ejecutara en un dispositivo sin flash se cerraría con un error.

La comprobación es para avisar al usuario de que su teléfono no tiene luz y tu app no puede hacer nada.

Yo lo comprobaría antes del setContentView para mostrar el layout de ahora si soporta flash y para mostrar otro layout con un texto diciendo que el teléfono no es compatible en caso contrario. Evidentemente, tienes que meter esa línea en un if/else, porque devuelve true si soporta flash y false en caso contrario. Ejecutar la línea sola no vale para nada.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 25/09/13, 22:46:01
Array

[xs_avatar]
jamercues jamercues no está en línea
Miembro del foro
 
Fecha de registro: may 2011
Mensajes: 182
Modelo de smartphone: xperia s
Tu operador: Jazztel
 Cita: Originalmente Escrito por mocelet Ver Mensaje
No es que tengas que comprobarlo obligatoriamente, es que si tu app se ejecutara en un dispositivo sin flash se cerraría con un error.

La comprobación es para avisar al usuario de que su teléfono no tiene luz y tu app no puede hacer nada.

Yo lo comprobaría antes del setContentView para mostrar el layout de ahora si soporta flash y para mostrar otro layout con un texto diciendo que el teléfono no es compatible en caso contrario. Evidentemente, tienes que meter esa línea en un if/else, porque devuelve true si soporta flash y false en caso contrario. Ejecutar la línea sola no vale para nada.
Actualice el codigo.
Este es el main activity (sin errores)

Código:
package com.example.holausuario;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){
			
		
		setContentView(R.layout.activity_main);
		final EditText laFrase = (EditText)findViewById(R.id.frase);
		final Button elBoton = (Button)findViewById(R.id.el_boton);
		final Button elBoton2 = (Button)findViewById(R.id.el_boton2);
		final Camera cam = null;
		final Parameters param = cam.getParameters();
		
		
		
		//this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
		
	
	elBoton.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View e) {
			laFrase.setText("Linterna Enchufada");
			cam.setParameters(param);
			cam.startPreview();
		}
		});
	elBoton2.setOnClickListener(new OnClickListener(){

		@Override
		public void onClick(View a) {
			laFrase.setText("Listerna apagada");
			cam.setParameters(param);
			cam.stopPreview();
			cam.release();
			
		}
		
	});
		}
		else{
			
		}
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
este es el xml

Código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/frase"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="48dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/el_boton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/frase"
        android:layout_marginTop="54dp"
        android:text="encender" />

    <Button
        android:id="@+id/el_boton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/el_boton"
        android:layout_alignBottom="@+id/el_boton"
        android:layout_alignRight="@+id/frase"
        android:layout_marginRight="19dp"
        android:text="apagar" />
    
	<permission 
	     
	     android:name="android.permission.FLASHLIGHT"
	     android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
	     android:protectionLevel="normal"
	     android:label="@string/permlab_flashlight"
	     android:description="@string/permdesc_flashlight" />
 

</RelativeLayout>
Me da error en las lineas que estan en negrita, las borro o quito el xml pero no carga en el movil, en el LogCat empieza a dar mensajes (no entiendo que dicen, aun soy nuevo) pero segun la consola dice sucess y tal.
Aclarar que para probar la app la paso al movil con la opcion de run as y seleciono el movil (xperia s)
Alguna sugerencia?
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 20:55:33 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /