我已经开了一个新项目 -
现在我想要做的是 - 通过按下按钮我想要播放一个mp3文件 - 而且每按一次按钮,声音文件将再次从它开始播放 - 所以让我们说mp3是10秒长,我按下按钮然后播放,4秒后我再次按下按钮,声音将再次播放.
现在我想知道的是 - 1-我应该把mp3文件放在哪里?
2 - 我必须添加什么代码,以便按下按钮时将播放mp3文件(让我们调用mp3文件click_sound.mp3)?
3-我需要在代码中添加什么才能在每次按下按钮时再次播放声音?
这是MainActivity.java的代码 -
package com.example.test1;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是activity_main.xml
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > …Run Code Online (Sandbox Code Playgroud) 我有一个活动类,在它的onResume部分我已经使用了下一个代码 -
@Override
protected void onResume() {
super.onResume();
bindService(new Intent(MainActivity.this, IMService.class), mConnection , Context.BIND_AUTO_CREATE);
}
Run Code Online (Sandbox Code Playgroud)
在onPause我使用下一个代码 -
@Override
protected void onPause()
{
unbindService(mConnection);
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
您可以理解我对服务具有约束力和解除绑定性.
现在问题是我想使用片段而不是Activity.
为了做到这一点,我已经将onPuse代码更改为 -
@Override
protected void onPause()
{
getActivity().unbindService(mConnection);
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
看起来很好.
但onResume我遇到的问题是绑定部分,我已经尝试了下一个代码 -
@Override
protected void onResume() {
super.onResume();
bindService(new Intent(getActivity(), IMService.class), mConnection , Context.BIND_AUTO_CREATE);
}
Run Code Online (Sandbox Code Playgroud)
但Eclipse给我一个错误说 -
The method bindService(Intent, ServiceConnection, int) is undefined for the type MainFragment
Run Code Online (Sandbox Code Playgroud)
该服务在清单中显示如下 -
<service android:name="com.example.test.services.IMService" >
</service>
Run Code Online (Sandbox Code Playgroud)
那么为什么我不能将服务绑定到片段中呢?也许我需要在getActivity代码中添加一些东西?
提供任何帮助 …
我正在尝试使用本地广播接收器.
为了做到这一点,我已经完成了下一步 -
1)在一项活动中,我想要发生一些事情,我创造了一个课程 -
private class NewGroupReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("The group ", "GOT IN THE RECIVING");
Toast.makeText(this, "Working",Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
2)在同一个活动中,我使用了下一个代码来创建一个接收器 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NewGroupReceiver receiver = new NewGroupReceiver();
//the intent filter will be action = "com.example.demo_service.action.SERVICE_FINISHED"
IntentFilter filter= new IntentFilter("com.example.apps.action.NEW_GROUP");
// register the receiver:
registerReceiver(receiver, filter);
}
Run Code Online (Sandbox Code Playgroud)
3)在服务类中,我使用下一个代码知道发生了什么事情 -
Intent resultsIntent=new Intent("com.example.apps.action.NEW_GROUP");
LocalBroadcastManager localBroadcastManager =LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(resultsIntent);
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我想知道的事情发生时 - 我看到它进入我在步骤3中使用的代码,但它似乎没有进入BroadcastReceiver - 第1步代码.
知道我在这里做错了什么吗?谢谢你的帮助.
我在我的应用程序中有一个按钮和一个ImageView.我想要做的是当我按下按钮然后ImageView上的图像将改变.我只有两个图片文件.
我想要做的是 - 如果第一张图片链接到ImageView,而不是通过点击按钮将其更改为pic2,如果pic2已链接,则点击该按钮会将其更改回第一张图片文件.
这是我试图使用的onClick方法:
public void onClick(View v) {
ImageView ib1 = (ImageView)findViewById(R.id.imageView1)
View p1 = findViewById(R.drawable.pic1);
if(ib1.getResources()==R.drawable.pic1){
ib1.setImageResource(R.drawable.pic2);
}else{
ib1.setImageResource(R.drawable.pic1);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助