随机播放声音文件按钮preSS - Android电子 [英] Play random sound file on button press - Android

查看:398
本文介绍了随机播放声音文件按钮preSS - Android电子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是初学者,我试图做一个非常简单的应用程序,在资产文件夹一个按钮和4 .OGG文件,该按钮会从上面提到的随机播放文件。

我只有一个主类和一个布局。

下面是我做什么,在code不显示任何错误,但应用程序崩溃立即启动模拟器的时候。

我的主类: -

 的MediaPlayer播放器;
AssetFileDescriptor描述;
私有String []文件清单;@覆盖
公共无效的onCreate(捆绑savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_list_item);玩家=新的MediaPlayer();按钮playSound =(按钮)findViewById(R.id.button1);AssetManager AMAN = this.getAssets();
尝试
{
 文件清单= aMan.list(/资产);
}赶上(IOException异常E1){
    e1.printStackTrace();
}playSound.setOnClickListener(新View.OnClickListener()
{
    公共无效的onClick(视图v)
    {
        随机randomGenerator =新的随机();
        INT randomInt = randomGenerator.nextInt(filelist.length);        尝试
        {
            字符串媒体文件的文件清单= [randomInt]
            。描述符= getAssets()openFd(媒体文件);
                player.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
            descriptor.close();
            播放器prepare()。
                        player.start();
        }
        赶上(例外五){
            e.printStackTrace();
        }
    }
});
}

我的布局: -

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=MainActivity。>< ImageView的
    机器人:ID =@ + ID / imageView1
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignParentTop =真
    机器人:layout_centerHorizo​​ntal =真
    机器人:SRC =@绘制/背景
    机器人:contentDescription =@字符串/递减/><按钮
    机器人:ID =@ + ID /按钮1
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignParentBottom =真
    机器人:layout_alignParentRight =真
    机器人:layout_marginBottom =154dp
    机器人:layout_marginRight =92dp
    机器人:文字=@字符串/按钮1/>< / RelativeLayout的>

下面是logcat的: -

  19 12-14:36:56.062:D / AndroidRuntime(540):关闭VM
12-14 19:36:56.062:W / dalvikvm(540):主题ID = 1:螺纹未捕获的异常(组= 0x409961f8)退出
12-14 19:36:56.072:E / AndroidRuntime(540):致命异常:主要
12-14 19:36:56.072:E / AndroidRuntime(540):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.mbawardi.layan / com.mbawardi.layan.MainActivity}:显示java.lang.NullPointerException
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread.access $ 600(ActivityThread.java:122)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.os.Handler.dispatchMessage(Handler.java:99)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.os.Looper.loop(Looper.java:137)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 19:36:56.072:E / AndroidRuntime(540):在java.lang.reflect.Method.invokeNative(本机方法)
12-14 19:36:56.072:E / AndroidRuntime(540):在java.lang.reflect.Method.invoke(Method.java:511)
12-14 19:36:56.072:E / AndroidRuntime(540):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 19:36:56.072:E / AndroidRuntime(540):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 19:36:56.072:E / AndroidRuntime(540):在dalvik.system.NativeStart.main(本机方法)
12-14 19:36:56.072:E / AndroidRuntime(540):致:显示java.lang.NullPointerException
12-14 19:36:56.072:E / AndroidRuntime(540):在com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.Activity.performCreate(Activity.java:4465)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 19:36:56.072:E / AndroidRuntime(540):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 19:36:56.072:E / AndroidRuntime(540):11 ...更多
12-14 19:36:59.042:I /流程(540):发送信号。 PID:540 SIG:9
12-14 19:37:06.032:D / AndroidRuntime(556):关闭VM
12-14 19:37:06.032:W / dalvikvm(556):主题ID = 1:螺纹未捕获的异常(组= 0x409961f8)退出
12-14 19:37:06.042:E / AndroidRuntime(556):致命异常:主要
12-14 19:37:06.042:E / AndroidRuntime(556):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.mbawardi.layan / com.mbawardi.layan.MainActivity}:显示java.lang.NullPointerException
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread.access $ 600(ActivityThread.java:122)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.os.Handler.dispatchMessage(Handler.java:99)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.os.Looper.loop(Looper.java:137)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 19:37:06.042:E / AndroidRuntime(556):在java.lang.reflect.Method.invokeNative(本机方法)
12-14 19:37:06.042:E / AndroidRuntime(556):在java.lang.reflect.Method.invoke(Method.java:511)
12-14 19:37:06.042:E / AndroidRuntime(556):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 19:37:06.042:E / AndroidRuntime(556):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 19:37:06.042:E / AndroidRuntime(556):在dalvik.system.NativeStart.main(本机方法)
12-14 19:37:06.042:E / AndroidRuntime(556):致:显示java.lang.NullPointerException
12-14 19:37:06.042:E / AndroidRuntime(556):在com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.Activity.performCreate(Activity.java:4465)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 19:37:06.042:E / AndroidRuntime(556):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 19:37:06.042:E / AndroidRuntime(556):11 ...更多

应用ρяσѕρєяK公司的解决方案之后的第二个logcat的: -

  20 12-14:19:02.227:D / AndroidRuntime(537):关闭VM
12-14 20:19:02.237:W / dalvikvm(537):主题ID = 1:螺纹未捕获的异常(组= 0x409961f8)退出
12-14 20:19:02.247:E / AndroidRuntime(537):致命异常:主要
12-14 20:19:02.247:E / AndroidRuntime(537):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.mbawardi.layan / com.mbawardi.layan.MainActivity}:显示java.lang.NullPointerException
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread.access $ 600(ActivityThread.java:122)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.os.Handler.dispatchMessage(Handler.java:99)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.os.Looper.loop(Looper.java:137)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 20:19:02.247:E / AndroidRuntime(537):在java.lang.reflect.Method.invokeNative(本机方法)
12-14 20:19:02.247:E / AndroidRuntime(537):在java.lang.reflect.Method.invoke(Method.java:511)
12-14 20:19:02.247:E / AndroidRuntime(537):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 20:19:02.247:E / AndroidRuntime(537):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 20:19:02.247:E / AndroidRuntime(537):在dalvik.system.NativeStart.main(本机方法)
12-14 20:19:02.247:E / AndroidRuntime(537):致:显示java.lang.NullPointerException
12-14 20:19:02.247:E / AndroidRuntime(537):在com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:42)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.Activity.performCreate(Activity.java:4465)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 20:19:02.247:E / AndroidRuntime(537):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 20:19:02.247:E / AndroidRuntime(537):11 ...更多


解决方案

删除进口android.R; 从进口项目R档导入。或者使用

  =描述MainActivity.this.getAssets()openFd(媒体文件)。

而不是

  =描述MainActivity.this.getAssets()openFd(audioogg /+媒体文件)。

I am a beginner, I'm trying to make a very simple app, one button and 4 .ogg files in the assets folder, that button would play random file from the above mentioned.

I have only one main class and one layout.

Here is what I did, the code doesn't show any error but the app crash immediately when launching on emulator.

My main class:-

    MediaPlayer player;
AssetFileDescriptor descriptor;
private String[] filelist;

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_item);

player = new MediaPlayer();

Button playSound = (Button)findViewById(R.id.button1);

AssetManager aMan = this.getAssets();
try 
{
 filelist = aMan.list("/assets");
} catch (IOException e1) {
    e1.printStackTrace();
}

playSound.setOnClickListener(new View.OnClickListener() 
{           
    public void onClick(View v) 
    {
        Random randomGenerator = new Random();
        int randomInt = randomGenerator.nextInt(filelist.length);

        try 
        {
            String mediaFile = filelist[randomInt];
            descriptor = getAssets().openFd(mediaFile);
                player.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
            descriptor.close();
            player.prepare();
                        player.start();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
});
}

My layout:-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:src="@drawable/background"
    android:contentDescription="@string/desc" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="154dp"
    android:layout_marginRight="92dp"
    android:text="@string/button1" />

</RelativeLayout>

Here is the logcat:-

12-14 19:36:56.062: D/AndroidRuntime(540): Shutting down VM
12-14 19:36:56.062: W/dalvikvm(540): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
12-14 19:36:56.072: E/AndroidRuntime(540): FATAL EXCEPTION: main
12-14 19:36:56.072: E/AndroidRuntime(540): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.os.Looper.loop(Looper.java:137)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 19:36:56.072: E/AndroidRuntime(540):  at java.lang.reflect.Method.invokeNative(Native Method)
12-14 19:36:56.072: E/AndroidRuntime(540):  at java.lang.reflect.Method.invoke(Method.java:511)
12-14 19:36:56.072: E/AndroidRuntime(540):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 19:36:56.072: E/AndroidRuntime(540):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 19:36:56.072: E/AndroidRuntime(540):  at dalvik.system.NativeStart.main(Native Method)
12-14 19:36:56.072: E/AndroidRuntime(540): Caused by: java.lang.NullPointerException
12-14 19:36:56.072: E/AndroidRuntime(540):  at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.Activity.performCreate(Activity.java:4465)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 19:36:56.072: E/AndroidRuntime(540):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 19:36:56.072: E/AndroidRuntime(540):  ... 11 more
12-14 19:36:59.042: I/Process(540): Sending signal. PID: 540 SIG: 9
12-14 19:37:06.032: D/AndroidRuntime(556): Shutting down VM
12-14 19:37:06.032: W/dalvikvm(556): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
12-14 19:37:06.042: E/AndroidRuntime(556): FATAL EXCEPTION: main
12-14 19:37:06.042: E/AndroidRuntime(556): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.os.Looper.loop(Looper.java:137)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 19:37:06.042: E/AndroidRuntime(556):  at java.lang.reflect.Method.invokeNative(Native Method)
12-14 19:37:06.042: E/AndroidRuntime(556):  at java.lang.reflect.Method.invoke(Method.java:511)
12-14 19:37:06.042: E/AndroidRuntime(556):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 19:37:06.042: E/AndroidRuntime(556):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 19:37:06.042: E/AndroidRuntime(556):  at dalvik.system.NativeStart.main(Native Method)
12-14 19:37:06.042: E/AndroidRuntime(556): Caused by: java.lang.NullPointerException
12-14 19:37:06.042: E/AndroidRuntime(556):  at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.Activity.performCreate(Activity.java:4465)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 19:37:06.042: E/AndroidRuntime(556):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 19:37:06.042: E/AndroidRuntime(556):  ... 11 more

The second logcat after applying ρяσѕρєя K's solution:-

12-14 20:19:02.227: D/AndroidRuntime(537): Shutting down VM
12-14 20:19:02.237: W/dalvikvm(537): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
12-14 20:19:02.247: E/AndroidRuntime(537): FATAL EXCEPTION: main
12-14 20:19:02.247: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.os.Looper.loop(Looper.java:137)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread.main(ActivityThread.java:4340)
12-14 20:19:02.247: E/AndroidRuntime(537):  at java.lang.reflect.Method.invokeNative(Native Method)
12-14 20:19:02.247: E/AndroidRuntime(537):  at java.lang.reflect.Method.invoke(Method.java:511)
12-14 20:19:02.247: E/AndroidRuntime(537):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-14 20:19:02.247: E/AndroidRuntime(537):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-14 20:19:02.247: E/AndroidRuntime(537):  at dalvik.system.NativeStart.main(Native Method)
12-14 20:19:02.247: E/AndroidRuntime(537): Caused by: java.lang.NullPointerException
12-14 20:19:02.247: E/AndroidRuntime(537):  at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:42)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.Activity.performCreate(Activity.java:4465)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-14 20:19:02.247: E/AndroidRuntime(537):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
12-14 20:19:02.247: E/AndroidRuntime(537):  ... 11 more

解决方案

remove import android.R; from imports and import your on project R file . or use

descriptor = MainActivity.this.getAssets().openFd(mediaFile);

instead of

descriptor = MainActivity.this.getAssets().openFd("audioogg/"+mediaFile);

这篇关于随机播放声音文件按钮preSS - Android电子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆