如何在按钮单击时调用Java类来播放Jfugue

时间:2016-01-15 01:45:29

标签: java android jfugue

当我只运行java文件时,它会产生声音。 我现在想点击按钮来调用java文件并在eclipse中产生声音。

这是我的Java代码:

import org.jfugue.player.Player;

public class HelloWorld {
  public static void main(String[] args) {
    Player player = new Player();
    player.play("C D E F G A B");
 }    
}

我的MainActivity.java在日食中:

public class MainActivity extends ActionBarActivity implements    View.OnClickListener { 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button1 = (Button)findViewById(R.id.button1);
    button1.setOnClickListener((OnClickListener) this);
}

@Override
public void onClick(View arg0) {
    // CODE HERE???     
 }
}

3 个答案:

答案 0 :(得分:1)

是的,但主要取决于您的应用程序的功能或您希望实现/应用的特定设计。

我预见到两种选择,但由于我不知道有关该应用程序的更多细节,我不会提出任何建议,只需参考它们:

A)如果它是关于类中的方法,则首先必须创建该类的新实例,并从新创建的实例中调用该函数。

这就像是:

public void onClick(View v) {
    BasicFunctions functions = new BasicFunctions();
    functions.play();
} 

BasicFunctions.java文件上,play方法如下:

public void play() {
   //functionality to play the file
}

B)您始终可以定义static方法以绕过创建额外实例:

public void onClick(View v) {
    BasicFunctions.play();
}

BasicFunctions.java文件上,play方法如下:

public static void play() {
   //functionality to play the file
}

但它始终取决于你,并希望你想实现。

修改

好像你刚刚获得了JFugue网站的HelloWorld示例,并尝试将其与您的Android应用程序结合使用。但是,我预见到很多问题,其中一个可能是你问题的根本原因。

首先,我不知道这个库,但对于纯Java,似乎HelloWorld示例按预期工作(而不是一个小错误,我认为只存在于我的本地机器上),我能听到声音。 现在,根据图书馆的调整,你试图为Android操作系统做好准备,事情并不那么容易,所以我建议你去enter link description here,这是图书馆的Android移植项目。

该项目仍然没有提供任何使用示例(因此,如果解决您的问题,您可以只分叉并提供一个,如果您愿意,因为它对将来的引用(如您的)非常有帮助,但是其wiki pages似乎得到了很好的解释:

enter image description here

此外,作为上述项目的附注,请查看this回答。

答案 1 :(得分:0)

你在xml中执行此操作 - 将android:onClick方法设置为java类中的方法名称:

<Button android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me!"
    android:onClick="myFancyMethod" />

您在java类中编写方法myFancyMethod

Button btn = (Button) findViewById(R.id.mybutton);

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) {
        myFancyMethod(v);
    } 
}); 

// some more code 

public void myFancyMethod(View v) {
    // does something very interesting 
} 

请参阅此主题的解决方案:How exactly does the android:onClick XML attribute differ from setOnClickListener?

答案 2 :(得分:0)

在.xml文件中写下这个。

<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="justclick" />

然后在你的内部JAVA代码实现方法

public void justclick(View v) {
// does you're function
 }