varios usar una studio requestpermissions permisos pedir para hacer example como camara aplicacion administrador java android eclipse

java - una - permisos para usar camara android studio



Grabación de video de la aplicación de Android cuando la pantalla está apagada (1)

La mayoría de las veces, cuando hay que hacer algo fuera de línea, se hace en un service .

(www.slideshare.net)

Suponiendo que no sabes qué es un servicio, de los documentos:

Un servicio es un componente de la aplicación que representa el deseo de una aplicación de realizar una operación de ejecución más prolongada sin interactuar con el usuario o de proporcionar funcionalidad para que otras aplicaciones la utilicen. Cada clase de servicio debe tener una declaración correspondiente en el paquete AndroidManifest.xml. Los servicios se pueden iniciar con Context.startService () y Context.bindService ().

Básicamente, es solo algo que se ejecuta en segundo plano, incluso cuando la pantalla está apagada. Ahora, todo lo que tiene que hacer, es poner su código de grabación en un servicio. Es posible que enfrente un problema por el que el sistema elimine su servicio, como lo especifican los documentos de Android:

Tenga en cuenta que esto significa que la mayoría de las veces el servicio se está ejecutando, el sistema puede matarlo si está bajo una gran presión de memoria. Si esto sucede, el sistema intentará reiniciar el servicio más adelante. Una consecuencia importante de esto es que si implementas onStartCommand () para programar el trabajo que se realizará de forma asíncrona o en otro hilo, es posible que desees utilizar START_FLAG_REDELIVERY para que el sistema vuelva a enviar un Intent para que no se pierda. Si su servicio es eliminado mientras se procesa.

En este caso, deberá agregar cierto código para mantener el servicio en primer plano y asegurarse de que no se elimine:

startForeground();//keeps service from getting destroyed.

El único problema que esto podría proporcionar es una notificación constante durante el tiempo que el servicio está activo.

También puedes usar startSticky() :

@Override public int onStartCommand(Intent intent, int flags, int startId) { // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; }

Ahora, digamos que has terminado de grabar. Puedes usar:

stopSelf();

para detener el servicio, o:

Context.stopService();

Sin embargo, esta notificación no es un gran problema, ya que es probable que la pantalla esté apagada mientras se ejecuta el servicio. También puede personalizar su notificación, y es mejor para el usuario saber qué está pasando en el fondo.

Aquí hay algunos ejemplos de código de grabación:

public class VideoCapture extends Activity implements OnClickListener, SurfaceHolder.Callback { MediaRecorder recorder; SurfaceHolder holder; boolean recording = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); recorder = new MediaRecorder(); initRecorder(); setContentView(R.layout.main); SurfaceView cameraView = (SurfaceView) findViewById(R.id.CameraView); holder = cameraView.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); cameraView.setClickable(true); cameraView.setOnClickListener(this); } private void initRecorder() { recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); CamcorderProfile cpHigh = CamcorderProfile .get(CamcorderProfile.QUALITY_HIGH); recorder.setProfile(cpHigh); recorder.setOutputFile("/sdcard/videocapture_example.mp4"); recorder.setMaxDuration(50000); // 50 seconds recorder.setMaxFileSize(5000000); // Approximately 5 megabytes } private void prepareRecorder() { recorder.setPreviewDisplay(holder.getSurface()); try { recorder.prepare(); } catch (IllegalStateException e) { e.printStackTrace(); finish(); } catch (IOException e) { e.printStackTrace(); finish(); } } public void onClick(View v) { if (recording) { recorder.stop(); recording = false; // Let''s initRecorder so we can record again initRecorder(); prepareRecorder(); } else { recording = true; recorder.start(); } } public void surfaceCreated(SurfaceHolder holder) { prepareRecorder(); } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } public void surfaceDestroyed(SurfaceHolder holder) { if (recording) { recorder.stop(); recording = false; } recorder.release(); finish(); } }

( ¿Cómo puedo capturar una grabación de video en Android? )

De nuevo, ponga ese código en un servicio de larga duración en primer plano, como expliqué anteriormente.

Si necesita más ayuda, no dude en preguntar.

~ Ruchir

Lo que estoy tratando de hacer es crear una aplicación que pueda grabar video o audio mientras la pantalla está apagada. Comenzamos a grabar y luego apagamos la pantalla o la grabadora debería disparar con una voz o cualquier otro comando externo. En cualquier caso, la aplicación debe seguir grabando.

Por favor proporcione el código de usted puede.