Hola Gracias por su excelente video. Oiga, cómo podría filtrar solo los archivos .mp4 en el spiner porque me aparecen otros mas y carpetas. Y cómo podrìa obtener el path de cada .mp4 para intentar enviarlo a un servidor. Muchas Gracias.
@SubZero64s3 жыл бұрын
Ojala sigas haciendo estos valiosos videos salu2
@diegomoissetdeespanes3 жыл бұрын
Saludos Tommy
@pacolopezl.75373 жыл бұрын
Tambien metí las lineas lista=fileList(); ArrayAdapter adapter = new ArrayAdapter (this, android.R.layout.simple_spinner_item, lista); sp1.setAdapter(adapter); para que actualizara la lista de videos del spiner una vez que toma un nuevo video, ya que de otro modo si se siguen sacando videos no se ven en el spinner a menos que se vuelva a entrar a la aplicacion. Pero no se si es correcto estar creando nuevos objetos con las lista de archivos para el spinner. Como se podría hacer para actualizar el spinner sin repetir nuevos objetos fileList(); ?? Gracias.
@diegomoissetdeespanes3 жыл бұрын
Si el objeto 'lista' es un vector, la única forma de actualizar el Spinner es crear un nuevo objeto adapter. Si queremos que sea más eficiente debemos crear un ArrayList: package com.tutorialesprogramacionya.proyecto046; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import android.widget.VideoView; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; public class MainActivity extends AppCompatActivity { private static final int TOMA_VIDEO = 1; private VideoView vv1; private Spinner sp1; private ArrayList lista=new ArrayList(); private ArrayAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vv1=findViewById(R.id.videoView); sp1=findViewById(R.id.spinner); for(int f=0;f< fileList().length;f++) lista.add(fileList()[f]); adapter=new ArrayAdapter(this, android.R.layout.simple_spinner_item,lista); sp1.setAdapter(adapter); } public void tomarVideo(View v) { Intent intent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(intent,TOMA_VIDEO); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==TOMA_VIDEO && resultCode==RESULT_OK) { Uri videoUri=data.getData(); vv1.setVideoURI(videoUri); vv1.start(); try { AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r"); FileInputStream in = videoAsset.createInputStream(); String nombrearch=crearNombreArchivoMP4(); FileOutputStream archivo = openFileOutput(nombrearch, Context.MODE_PRIVATE); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { archivo.write(buf, 0, len); } lista.add(nombrearch); adapter.notifyDataSetChanged(); }catch (IOException e) { Toast.makeText(this,"Problemas en la grabación",Toast.LENGTH_SHORT).show(); } } } private String crearNombreArchivoMP4() { String fecha = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String nombre = fecha + ".mp4"; return nombre; } public void verVideo(View v) { int pos=sp1.getSelectedItemPosition(); vv1.setVideoPath(getFilesDir()+"/"+lista.get(pos)); vv1.start(); } }
@luciaguadalupenunezyanez6419 Жыл бұрын
Start activity for result esta en desuso
@arellano21403 жыл бұрын
Y como se guardaría en una memoria externa o una usb?
@vloxomire2 жыл бұрын
Hola profe, era para comentar que en la api 32(Tiramisu) este código no se visualiza en el videoView, pero lo probé en mi celu físico que tiene una versión posterior y ahí funciono perfecto. este es el error que me tira en la api 31: en el TOMA_VIDEO le puse 69 😅 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.max.a45_grabar_video_y_guardarlo_en_memoria, PID: 28697 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=69, result=-1, data=Intent { dat=content://media/external_primary/video/media/59 flg=0x1 }} to activity {com.max.a45_grabar_video_y_guardarlo_en_memoria/com.max.a45_grabar_video_y_guardarlo_en_memoria.MainActivity}: java.lang.IllegalStateException: Only owner is able to interact with pending/trashed item content://media/external_primary/video/media/59 at android.app.ActivityThread.deliverResults(ActivityThread.java:5343)