我正在尝试在Android模拟器中播放视频我在我的资源文件夹中的视频以及原始文件夹但是在做了一些研究后仍然无法在我的模拟器中播放视频我正在使用android 2.1我的视频格式是mp4所以我不要认为这应该是一个问题任何人都可以给我一个示例代码,以便我可以了解更多?
问题是我需要显示视频的VideoView只会使用URI或文件路径指向视频.
如果我将视频保存在raw或assets文件夹中,我只能获得输入流或文件描述符,似乎没有什么可用于初始化VideoView.
更新
我仔细研究了MediaPlayer示例,并尝试使用FileDescriptor启动MediaPlayer到资源文件,如下面的代码所示:
SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);
player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
Run Code Online (Sandbox Code Playgroud)
现在我得到以下异常:
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
Run Code Online (Sandbox Code Playgroud)
似乎没有其他方法可以在启动时将文件复制到SD卡,这似乎浪费时间和内存.
我出于性能原因使用Android NDK主要在C中创建应用程序,但似乎fopen等文件操作在Android中无法正常运行.每当我尝试使用这些功能时,应用程序崩溃.
如何使用Android NDK创建/写入文件?
我有一个应用程序,当它启动时我必须禁用Android设备上的所有按钮,我成功禁用了结束通话和其他.我需要禁用主页按钮单击.它不应该对点击产生任何动作.
任何建议高度赞赏
有人可以给我一个删除所有ListView项目并替换为新项目的示例代码吗?
我尝试更换适配器项而没有成功.我的代码是
populateList(){
results //populated arraylist with strings
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results);
listview.setAdapter(adapter);
adapter.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
// now populating list again
repopulateList(){
results1 //populated arraylist with strings
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results1);
listview.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
Run Code Online (Sandbox Code Playgroud)
这里的repopulateList()方法将添加到ListView项,但它不会删除/替换所有ListView项.
在我的应用程序中,有一些特定于应用程序的设置,下次我的应用程序启动时应该可以使用.
换句话说,我希望数据在应用程序周期的会话中可用.
这可以在不使用数据库(sqlite)的情况下实现.
我正在使用像这样设置的ListView:
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:longClickable="false"
android:choiceMode="singleChoice">
</ListView>
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我将一个OnItemSelectedListener添加到ListView,如下所示:
getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
我的Activity实现了这样的监听器:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
+ view.toString() + " Position: " + " Id: " + id);
}
Run Code Online (Sandbox Code Playgroud)
我的希望是,当我点击列表中的某些内容时,我会看到此调试输出.但调试输出永远不会显示在LogCat中.
我想以编程方式打开optionsMenu,而无需单击用户的菜单键.我该怎么办?
我正在构建一个Android应用程序,并希望维护一些我可以调整的环境变量,具体取决于我是处于开发模式还是发布模式.例如,我需要调用Web服务,并且在任一模式下URL都会略有不同.我想将此设置和其他设置外部化,以便我可以根据目标部署轻松更改它们.
SDK中是否有任何最佳实践或任何内容可以满足此需求?