Доступ к видео как во внутренней памяти, так и на внешней SD-карте - AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Доступ к видео как во внутренней памяти, так и на внешней SD-карте - Android

Сообщение Anonymous »

Я разработал простое приложение для Android, которое будет извлекать видео из
path="storage/MicroSD/Videos" и представлять их в виде списка. При выборе видео выбранное видео будет воспроизводиться. Воспроизводятся видео, расположенные в папке Storage/MicroSD/Videos. Но видео по другому пути не загружаются. Подскажите, пожалуйста, как получить видео со всех путей (внутреннее и внешнее хранилище). Кроме того, если я запускаю одно и то же приложение на разных телефонах, путь к SD-карте будет отличаться, например, Storage/SD Card o/videos.
Теперь у меня вопрос: как я могу получить объект File программно указывать на видеокаталог любого устройства по умолчанию?

Основное действие

public class MainActivity extends Activity {

private ListView mListView;
private List fileNameList;
public String path="storage/MicroSD/Videos";
private File file;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
file = Environment.getExternalStorageDirectory();
fileNameList = getFileListfromSDCard();
final ListView listView = (ListView) findViewById(R.id.list);
ArrayAdapter adapter1 = new ArrayAdapter (this,android.R.layout.simple_list_item_1, android.R.id.text1, fileNameList);
listView.setAdapter(adapter1);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView parent, View view,
int position, long id) {
int itemPosition = position;
String itemValue = (String) listView.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, com.video.videolibrary.SelectedVideo.class);
intent.putExtra("id", id);
intent.putExtra("itemValue", itemValue);
intent.putExtra("path", path);
startActivity(intent);
}

});

Button button = (Button) findViewById(R.id.btn_Online);
// Capture button clicks
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent myIntent = new Intent(MainActivity.this,com.video.videolibrary.SelectedVideo.class);
startActivity(myIntent);
}
});

}

private List getFileListfromSDCard() {

File files = new File(path);
FileFilter filter = new FileFilter() {
private final List exts = Arrays.asList("mp4","MP4");
@Override
public boolean accept(File pathname) {
String ext;
String path = pathname.getPath();
ext = path.substring(path.lastIndexOf(".") + 1);
return exts.contains(ext);
}
};

final File [] filesFound = files.listFiles(filter);
List flLst = new ArrayList();
if (filesFound != null && filesFound.length > 0) {
for (File file : filesFound) {
flLst.add(file.getName());
}
}
return flLst;
}

}


Выбранный видеокласс

public class SelectedVideo extends Activity {
VideoView view;AudioManager audioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selected_video);
view = (VideoView)findViewById(R.id.videoView1);
Bundle bundle = getIntent().getExtras();
String path=bundle.getString("path");
String itemValue = bundle.getString("itemValue");
view.setVideoURI(Uri.parse(path+"/"+itemValue ));
VideoView videoView = (VideoView) findViewById(R.id.videoView1);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
Uri uri = Uri.parse(path+"/"+itemValue);
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int height = dm.heightPixels;
int width = dm.widthPixels;
videoView.setMinimumWidth(width);
videoView.setMinimumHeight(height);
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
videoView.requestFocus();
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
SeekBar volControl = (SeekBar)findViewById(R.id.volbar);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}

@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});

Button stopbutton = (Button) findViewById(R.id.btn_stop);
stopbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
view.pause();

}
});

Button playbutton = (Button) findViewById(R.id.btn_play);
playbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Bundle bundle = getIntent().getExtras();
String itemValue = bundle.getString("itemValue");
Toast.makeText(getApplicationContext(),
itemValue, Toast.LENGTH_LONG)
.show();
view.start();
}
});

Button backbutton = (Button) findViewById(R.id.btn_back);
backbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
view.stopPlayback();
startActivity(new Intent(SelectedVideo.this, MainActivity.class));
}
});

}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
}


Файл манифеста Android























Подробнее здесь: https://stackoverflow.com/questions/308 ... rd-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Доступ к видео как во внутренней хранилище, так и на внешней SD -карте - Android
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как получить максимально доступный размер внутренней высоты и внутренней ширины окна?
    Anonymous » » в форуме Javascript
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Проблема с модификацией внутренней петли Внешней петли в Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Изменить значение во внутренней карте с помощью потока
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Изменить значение во внутренней карте с помощью потока
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»