小编Cat*_*san的帖子

播放资源目录中的音频文件

我有以下代码:

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().我找不到处理这类问题的好指南.

audio android assets android-assets android-mediaplayer

118
推荐指数
4
解决办法
10万
查看次数

如何为Android开发设置Vim?

任何人都可以为Android开发描述一个很好的Vim设置吗?我现在正在使用Eclipse,但我真的很想使用Vim,因为它更快,我更喜欢它.我对Eclim不感兴趣.

我对使用Vim插件(对于Java,自动完成等)感兴趣,.vimrc看起来如何以及如何构建/运行应用程序的整个过程(尽可能高效).

vim android

72
推荐指数
1
解决办法
2万
查看次数

如何使用默认的Android drawables

使用默认Android drawables时最好的方法是什么?我应该使用android.R.drawable或应该在我的项目中复制drawables并使用R.drawable

是否有任何风险,在较新版本的Android中,某些默认的drawable被删除或调整大小?或者,以某种消极方式影响,我的应用程序的外观?此外,Android源代码中哪些drawables被认为是"稳定的",应该依赖?

我宁愿不复制drawables因为我认为应用程序的外观应与所使用的Android版本一致.因此,例如,对于版本1.6,它应该使用版本1.6的默认Android位图.

android drawable

55
推荐指数
5
解决办法
11万
查看次数

用Proguard编译给出SimException:"局部变量类型不匹配"

当我使用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)

android proguard

46
推荐指数
4
解决办法
2万
查看次数

检测Android模拟器何时完全启动

我想创建一个脚本,我启动一个模拟器,系统完全启动后,我想安装一个.apk.

我怎么知道模拟器什么时候完全启动所以我可以运行安装命令?这里http://developer.android.com/guide/developing/tools/adb.html据说adb wait-for-device install <app>.apk不正确.

那我该怎么做呢?可能吗?我可以选择只睡几分钟,直到我可以确定模拟器已启动?

scripting android emulation

31
推荐指数
4
解决办法
2万
查看次数

CropView的裁剪相机预览

我有一个固定宽度和高度的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 opengl-es android-camera textureview

23
推荐指数
3
解决办法
3万
查看次数

开发电子商务应用程序的良好指南

我正在Android上制作一个电子商务应用程序,因为这是我的第一个认真的项目,我试图预先找出做到这一点的最佳方法.

该应用程序与Web服务(magento api,不幸地说是soap或xml rpc)进行对话并获取手机上的所有内容(产品类别,产品详细信息,用户凭据等).我认为它应该做延迟加载或类似的东西.

所以,我正在考虑将用户凭据保存在一个自定义对象中,该对象将保存在SharedPreferences每个Activity cand中,以便轻松访问它.我将使用几个ListViews来显示内容并AsyncTask获取所需的数据.我应该将所有数据保存在对象的内存中,还是应该使用某种缓存或本地数据库?另外,我打算使用HashMapwith SoftReferences来保存我正在下载的位图.但这不会吃掉很多记忆吗?

所有活动如何获取所有这些对象(电子商务篮等)?我正在考虑使用Intents传递它们,但这对我来说似乎不对.SharedPreferences可以用于很多对象吗?是否存在任何并发问题?

任何指针都会非常感激.有什么好的指导方针?我应该研究哪些课程?你知道互联网上有什么资源可供我查看吗?

android e-commerce

16
推荐指数
1
解决办法
1万
查看次数

各种Android设备上的已知问题?

是否有网站收集Android开发人员应该了解的各种Android设备中存在的各种问题?例如"手机X上的振动功能存在问题.解决方法是......".

如果没有,如果有人设置它会很好,并允许我们的开发人员添加我们在各种Android设备上使用我们的应用程序时遇到的已知问题.

android device

12
推荐指数
1
解决办法
201
查看次数

使用匕首在ContentProvider中注入数据库

我想注入一个单身SqliteOpenHelperContentProvider.但是,似乎ContentProvider在创建Application实例之前构建实例(getApplicationContext()返回null).我什么时候可以注入数据库?我已经尝试过构造函数和onCreate()方法ContentProvider.

android dagger

10
推荐指数
3
解决办法
3349
查看次数

Android 6.0如果该SSID已经有另一个WifiConfiguration,则无法添加WifiConfiguration

Android 6.0对WiFi行为进行了一些更改,它破坏了我的应用行为,无法找到解决方案.

基本上,对于Android 6.0,您不得修改或删除非应用程序创建的WifiConfiguration对象.这意味着我需要始终创建自己的WifiConfiguration对象.但是,如果用户或其他应用程序已经为特定AP创建了WifiConfiguration,则无法为该AP创建另一个AP.

wifiManager.addNetwork(wifiConfiguration)返回-1.这适用于所有以前的Android版本,但不适用于Android 6.0

所以我被困住了.这是Android的错误吗?我想如果他们为具有自己的WiFi接入点的自定义硬件开发应用程序,很多开发人员应该受此影响.

android wifi android-wifi android-6.0-marshmallow

9
推荐指数
1
解决办法
1990
查看次数