#android #android-videoview
#Android #android-videoview
Вопрос:
Я только начал возиться с разработчиком Android и пытаюсь просто воспроизвести видеофайл, который есть где-то в Интернете. Мой Main.xml выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:layout_height="wrap_content" android:id="@ id/button1" android:layout_width="wrap_content" android:text="@string/buttonText" android:onClick="clickHandler"></Button>
<VideoView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@ id/MyVideoView"></VideoView>
</LinearLayout>
и мой Java-файл выглядит следующим образом:
пакет com.dop.videoTest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
public class VideoTest extends Activity {
private String path = "http://commonsware.com/misc/test2.3gp";
private VideoView mVideoView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void clickHandler(View view)
{
mVideoView = (VideoView) findViewById(R.id.MyVideoView);
if (path == "") {
Toast.makeText(
VideoTest.this,
"Please edit VideoViewDemo Activity, and set path"
" variable to your media file URL/path",
Toast.LENGTH_LONG).show();
} else {
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
}
}
}
итак, когда я нажимаю свою кнопку, он просто говорит «Видео-тест приложения неожиданно остановился. Пожалуйста, попробуйте еще раз.»
есть идеи?
Комментарии:
1. Для сравнения строк используйте equals(
path.equals("")
), а неpath == ""
2. выполнение == работает нормально. Кроме того, это не решит проблему
Ответ №1:
Путь в вашем коде
private String path = "http://commonsware.com/misc/test2.3gp";
Для этого VideoView потребуется доступ в Интернет.
Скорее всего, вы не установили разрешение на доступ в Интернет в манифесте.
Одна из причин, по которой это происходит, заключается в том, что ваше приложение пытается получить доступ к чему-либо, для чего требуется явное указание разрешения в манифесте.
Разрешение на доступ в Интернет может быть установлено как:
< uses-permission android:name="android.permission.INTERNET" />
Проверьте эту ссылку:
Документация по манифесту Android
Комментарии:
1. Вы правы, добавление этой строки фактически устранило ошибку, и видео теперь воспроизводится. Почему eclipse не сообщает вам об этом? Я бы никогда не догадался, что это причина.
2. Ну, поддержка Android в eclipse осуществляется отдельным плагином, разработанным Android team из Google (насколько я знаю). Так что это их часть .. не следует винить eclipse за это. Я не уверен, насколько легко разработчикам Android сообщать вам о таких ошибках, но все же поддержка разработки Android еще не приблизилась к зрелой фазе .. но я верю, что они будут.
3. Gotcha…do вы знаете способ выполнить трассировку или echo на Java, чтобы они отображались в консоли eclipse?
4. Для этого вы можете использовать LogCat. Проверьте это аналогично