我有以下代码:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行这段代码时,它会按字母顺序开始播放资源目录中的所有音频文件,而不是只播放我请求的音频文件.我究竟做错了什么?有没有更好的方法从资源目录播放音频文件?
后续问题:将音频文件保存在资源目录中并将它们保存在res/raw目录中是否有区别?除了他们没有获得ID,如果他们在资产目录中的事实.如果我将音频文件移动到res/raw文件夹,那么我有一个重用MediaPlayers 的问题,因为没有id参数setDataSource().我找不到处理这类问题的好指南.
任何人都可以为Android开发描述一个很好的Vim设置吗?我现在正在使用Eclipse,但我真的很想使用Vim,因为它更快,我更喜欢它.我对Eclim不感兴趣.
我对使用Vim插件(对于Java,自动完成等)感兴趣,.vimrc看起来如何以及如何构建/运行应用程序的整个过程(尽可能高效).
使用默认Android drawables时最好的方法是什么?我应该使用android.R.drawable或应该在我的项目中复制drawables并使用R.drawable?
是否有任何风险,在较新版本的Android中,某些默认的drawable被删除或调整大小?或者,以某种消极方式影响,我的应用程序的外观?此外,Android源代码中哪些drawables被认为是"稳定的",应该依赖?
我宁愿不复制drawables因为我认为应用程序的外观应与所使用的Android版本一致.因此,例如,对于版本1.6,它应该使用版本1.6的默认Android位图.
当我使用Proguard编译我的Android应用程序时,我收到以下错误:
-dex:
[echo] Converting compiled files and external libraries into /home/ka/dev/workspace/ImPress/build/classes.dex...
[apply]
[apply] UNEXPECTED TOP-LEVEL EXCEPTION:
[apply] com.android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type java.io.File using a local variable of type java.lang.Object[]. This is symptomatic of .class transformation tools that ignore local variable information.
[apply] at com.android.dx.cf.code.BaseMachine.throwLocalMismatch(BaseMachine.java:550)
[apply] at com.android.dx.cf.code.BaseMachine.getLocalTarget(BaseMachine.java:405)
[apply] at com.android.dx.cf.code.BaseMachine.storeResults(BaseMachine.java:532)
[apply] at com.android.dx.cf.code.ValueAwareMachine.run(ValueAwareMachine.java:197)
[apply] at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:291)
[apply] at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:608)
[apply] at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:526)
[apply] at com.android.dx.cf.code.Simulator.simulate(Simulator.java:99)
[apply] at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:684)
[apply] at …Run Code Online (Sandbox Code Playgroud) 我想创建一个脚本,我启动一个模拟器,系统完全启动后,我想安装一个.apk.
我怎么知道模拟器什么时候完全启动所以我可以运行安装命令?这里http://developer.android.com/guide/developing/tools/adb.html据说adb wait-for-device install <app>.apk不正确.
那我该怎么做呢?可能吗?我可以选择只睡几分钟,直到我可以确定模拟器已启动?
我有一个固定宽度和高度的TextureView,我想在其中显示相机预览.我需要裁剪相机预览,以便它看起来不会在我的TextureView中拉伸.怎么做种植?如果我需要使用OpenGL,如何将Surface Texture绑定到OpenGL以及如何使用OpenGL进行裁剪?
public class MyActivity extends Activity implements TextureView.SurfaceTextureListener
{
private Camera mCamera;
private TextureView mTextureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_options);
mTextureView = (TextureView) findViewById(R.id.camera_preview);
mTextureView.setSurfaceTextureListener(this);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mCamera = Camera.open();
try
{
mCamera.setPreviewTexture(surface);
mCamera.startPreview();
} catch (IOException ioe) {
// Something bad happened
}
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mCamera.stopPreview();
mCamera.release();
return true;
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
} …Run Code Online (Sandbox Code Playgroud) 我正在Android上制作一个电子商务应用程序,因为这是我的第一个认真的项目,我试图预先找出做到这一点的最佳方法.
该应用程序与Web服务(magento api,不幸地说是soap或xml rpc)进行对话并获取手机上的所有内容(产品类别,产品详细信息,用户凭据等).我认为它应该做延迟加载或类似的东西.
所以,我正在考虑将用户凭据保存在一个自定义对象中,该对象将保存在SharedPreferences每个Activity cand中,以便轻松访问它.我将使用几个ListViews来显示内容并AsyncTask获取所需的数据.我应该将所有数据保存在对象的内存中,还是应该使用某种缓存或本地数据库?另外,我打算使用HashMapwith SoftReferences来保存我正在下载的位图.但这不会吃掉很多记忆吗?
所有活动如何获取所有这些对象(电子商务篮等)?我正在考虑使用Intents传递它们,但这对我来说似乎不对.SharedPreferences可以用于很多对象吗?是否存在任何并发问题?
任何指针都会非常感激.有什么好的指导方针?我应该研究哪些课程?你知道互联网上有什么资源可供我查看吗?
是否有网站收集Android开发人员应该了解的各种Android设备中存在的各种问题?例如"手机X上的振动功能存在问题.解决方法是......".
如果没有,如果有人设置它会很好,并允许我们的开发人员添加我们在各种Android设备上使用我们的应用程序时遇到的已知问题.
我想注入一个单身SqliteOpenHelper的ContentProvider.但是,似乎ContentProvider在创建Application实例之前构建实例(getApplicationContext()返回null).我什么时候可以注入数据库?我已经尝试过构造函数和onCreate()方法ContentProvider.
Android 6.0对WiFi行为进行了一些更改,它破坏了我的应用行为,无法找到解决方案.
基本上,对于Android 6.0,您不得修改或删除非应用程序创建的WifiConfiguration对象.这意味着我需要始终创建自己的WifiConfiguration对象.但是,如果用户或其他应用程序已经为特定AP创建了WifiConfiguration,则无法为该AP创建另一个AP.
wifiManager.addNetwork(wifiConfiguration)返回-1.这适用于所有以前的Android版本,但不适用于Android 6.0
所以我被困住了.这是Android的错误吗?我想如果他们为具有自己的WiFi接入点的自定义硬件开发应用程序,很多开发人员应该受此影响.
android ×10
android-wifi ×1
assets ×1
audio ×1
dagger ×1
device ×1
drawable ×1
e-commerce ×1
emulation ×1
opengl-es ×1
proguard ×1
scripting ×1
textureview ×1
vim ×1
wifi ×1