我正在制作一个新的Android声音应用程序.当我点击它时,我做了一个可点击的按钮来播放声音.但我也希望它在第二次点击时停止播放声音.那部分工作正常现在这是问题,当我再次点击按钮再次播放声音时,它不播放它,媒体播放器完全停止.我在论坛上看,但我似乎找不到可以帮助我的答案.这是我的活动:
MediaPlayer mpButtonClick1;
MediaPlayer mpButtonClick2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.prvi);
final MediaPlayer mpButtonClick1 = MediaPlayer.create(this, R.raw.spalshm);
final MediaPlayer mpButtonClick2 = MediaPlayer.create(this, R.raw.splashs);
Button dugme = (Button) findViewById(R.id.dugme);
dugme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mpButtonClick1.isPlaying()) {
mpButtonClick1.stop();
mpButtonClick1.reset();
}
else {
mpButtonClick1.start();
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我尝试编写mpButtonClick1.prepare(); 我收到错误未处理的异常类型IOE异常
我有一个奇怪的问题.我切换到RecyclerView了ListView,我无法刷新或通知我的变化ListView.我尝试调用Item.this.notifyDataSetChanged();
和其他方法刷新,View但它不起作用.代替RecyclerView刷新时我滚动(与方向无关).如何RecyclerView更改时如何通知我?
码:
@Override
public void onBindViewHolder(Ids holder, final int position) {
rowItemClass = (ListViewRow) rowItems.get(position);
Log.e("swag", "OYOYOYOYOYO");
if (Globals.isPlaying && Globals.pos == position) {
if (pausedSamePos == true) {
holder.pauseed_play.setVisibility(View.VISIBLE);
holder.playing_pause.setVisibility(View.GONE);
} else {
holder.pauseed_play.setVisibility(View.GONE);
holder.playing_pause.setVisibility(View.VISIBLE);
}
holder.song_currenttime_sb.setActive();
holder.song_duration.setVisibility(View.INVISIBLE);
holder.song_duration_sb.setVisibility(View.VISIBLE);
holder.seekbar.setActive();
} else {
holder.seekbar.setInactive();
holder.song_currenttime_sb.setInactive();
holder.song_icon.setImageResource(rowItemClass.getImageId());
holder.song_duration_sb.setVisibility(View.INVISIBLE);
holder.song_duration.setVisibility(View.VISIBLE);
holder.pauseed_play.setVisibility(View.GONE);
holder.playing_pause.setVisibility(View.GONE);
}
sharedPreference = new SharedPreference();
holder.song_duration.setTypeface(Globals
.getTypefaceSecondary(context));
holder.song_duration_sb.setTypeface(Globals
.getTypefaceSecondary(context));
holder.song_name.setTypeface(Globals.getTypefacePrimary(context));
holder.song_currenttime_sb.setTypeface(Globals
.getTypefaceSecondary(context));
holder.song_name.setText(rowItemClass.getTitle());
holder.song_duration.setText(rowItemClass.getDesc());
holder.song_duration_sb.setText(rowItemClass.getDesc()); …Run Code Online (Sandbox Code Playgroud) 因此,我在浏览器中使用了Google Play服务,https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#play ,我遇到了一个问题.他们在他们的网站上提供的代码不起作用.我得到错误.
package puske.com;
import com.google.android.gms.ads.*;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class Menu extends Activity {
private AdView adView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
// Create the adView.
adView = new AdView(this);
adView.setAdUnitId(MY_AD_UNIT_ID);
adView.setAdSize(AdSize.BANNER);
// Lookup your LinearLayout assuming it's been given
// the attribute android:id="@+id/mainLayout".
RelativeLayout layout = (RelativeLayout)findViewById(R.id.menuz);
// Add the adView to it.
layout.addView(adView);
// Initiate a generic request.
AdRequest …Run Code Online (Sandbox Code Playgroud) 我最近从Admob SDK改为GPS Lib,有一件事困扰着我.我有一个简单的视图来定义我的布局中的行,以防止用户无意中点击广告.使用Admob SDK时,如果没有广告,该行会降至布局的底部,但使用GPS Lib,该视图仍会保留在原来的位置.

当没有广告时,当用户在离线模式下使用应用时,就会出现空洞的丑陋空间.

如果没有广告,我该如何摆脱这个空间?这是我的XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back2" >
<RelativeLayout
android:id="@+id/upperBar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#000000" >
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/bar"
android:paddingBottom="2dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:paddingTop="2dp" >
<ImageButton
android:id="@+id/infop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:background="@drawable/info_select_blue" />
<ImageButton
android:id="@+id/share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/share_selector_blue" />
<ImageButton
android:id="@+id/moreaps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:background="@drawable/more_selector_blue" />
</RelativeLayout>
</RelativeLayout>
<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/view"
android:layout_below="@+id/sbsz"
android:columnWidth="110dp"
android:horizontalSpacing="10dp"
android:listSelector="#00000000"
android:numColumns="auto_fit"
android:verticalSpacing="12dp" >
</GridView>
<SeekBar
android:id="@+id/sbsz"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/upperBar"
android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_dark"
android:thumb="@drawable/apptheme_scrubber_control_selector_holo_dark" /> …Run Code Online (Sandbox Code Playgroud) android清单auto和preferExternal安装位置有什么区别?两个选项都可以在外部存储器上安装应用 它是大而重要的吗?设置哪个更好?
我有一个RelativeLayout15个按钮,我正在开发一个新项目,并且OnTouchListener,我希望我的应用程序执行以下操作:当用户触摸例如按钮1时,Mp1将开始播放,直到用户抬起他的手指或将其移动到按钮2 ,然后按钮2上的mp2应该开始,依此类推.
但是这里发生了什么,用户触摸屏幕并且升降机工作正常的部分,但是如果用户移动他的手指(而不是抬起)如果按下按钮1它仍将处于按下状态(动作向下)直到用户抬起他的手指.像这样的东西:

我的问题:
当手指离开按钮边框以停止按钮并打开任何按下按钮(手指触摸的地方)时,我需要添加什么?我的代码:
sound1.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
pressed1 = true;
mp1 = MediaPlayer.create(MainClass.this, R.raw.item1);
mp1.start();
sound1.setBackgroundResource(R.drawable.pad_pressed);
if (looping == true) {
mp1.setLooping(true);
} else if (looping == false) {
mp1.setLooping(false);
}
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
pressed1 = false;
mp1.stop();
mp1.reset();
mp1.release();
sound1.setBackgroundResource(R.drawable.pad_normal);
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud) 我有RecyclerView非常复杂的项目,多个按钮/图像/文本.要访问每个按钮/图像,我在Adapter类中设置了单击Listeners.
但现在我正在尝试添加功能来设置联系人铃声,我有一个问题.
我正在调用onActivityResult方法,如下所示:
Intent contactIntent = new Intent(Intent.ACTION_PICK);
contactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE);
contactIntent.putExtra("RINGTONE_POSITION", position);
((Activity) context).startActivityForResult(contactIntent, CONTACT_CHOOSER_ACTIVITY_CODE );
Run Code Online (Sandbox Code Playgroud)
这很好.但问题出在这里:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
....
...
...
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:Cannot resolve method 'onActivityResult(int, int, android.content.Intent)'
有什么办法可以避免这种情况吗?或者是否可以在适配器类中使用此方法?如果不是我该怎么办?
如何阻止MediaPlayer相互播放?我希望应用程序中的媒体播放器只播放1个声音.现在,当我播放1个声音,然后播放另一个声音时,它们同时播放.我希望当我播放第二个声音时,第一个停止,所以它们不会在彼此之上播放.我的代码:
mp=MediaPlayer.create(this, R.raw.barets);
ImageButton dugme1 = (ImageButton) findViewById(R.id.dugme1);
dugme1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()){
mp.pause();
mp.seekTo(0);
}
else{
mp.start();
}
}
});
mp2=MediaPlayer.create(this, R.raw.dragunov);
ImageButton dugme2 = (ImageButton) findViewById(R.id.dugme2);
dugme2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
else{
mp2.start();
}
}
});
mp3=MediaPlayer.create(this, R.raw.g3s);
ImageButton dugme3= (ImageButton) findViewById(R.id.dugme3);
dugme3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp3.isPlaying()){
mp3.pause();
mp3.seekTo(0);
}
else{
mp3.start();
}
}
});
mp4=MediaPlayer.create(this, R.raw.psg1); …Run Code Online (Sandbox Code Playgroud) 如何制作幻灯片动画?感谢用户Romain Piel在本主题中获得此代码.但我无法想象如何制作逆向效果.那个动画用于向下滑动,但我想要向上滑动.我怎样才能做到这一点?我很抱歉,如果这是一个糟糕的问题,但动画总是令我感到困惑.我也尝试过其他代码,但看起来并不好看.
overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out);
Run Code Online (Sandbox Code Playgroud)
R.anim.push_down_in:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="900"/>
</set>
Run Code Online (Sandbox Code Playgroud)
R.anim.push_down_out:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="900"/>
</set>
Run Code Online (Sandbox Code Playgroud) 我正在制作录音应用程序,我遇到了一个小问题.我想要保存录制的文件,它工作正常,除了名称有问题.我有这个代码:
int num = 0;
File FolderCreator = new File(
Environment.getExternalStorageDirectory()
+ "/My Recored Songs/Pads/");
File FileCreator = new File(FolderCreator, "My Record.mp3");
Run Code Online (Sandbox Code Playgroud)
然后
if (FileCreator.exists()) {
num++;
FileCreator = new File(FolderCreator, "My Record "
+ num +".mp3");
}
Run Code Online (Sandbox Code Playgroud)
它有效.但问题是,如果我离开应用程序并再次启动它,它将从1开始计数并覆盖以前的文件.我怎么能防止这种情况?
我有一个奇怪的问题.我有一个自定义ListView用BaseAdapter.在我的ListView行布局中,我有几个TextViews Buttons,和a SeekBar.一切都很好,没有任何问题,除了回收.
会发生什么:SeekBar除了可见之外,所有的都是隐藏的.的SeekBar是,当看到MediaPlayer上排播放.那部分也很有效.
但是,当用户向上或向下滚动,并且具有可见的行SeekBar不在视图中时,它会循环使用,并且SeekBar也会被回收,并且即使它不可见并且该行未播放(mp)也会不断更新.当用户向后滚动以返回正在播放的视图时,SeekBar是可见的,但是没有更新,它的位置是0.而是随机SeekBar更新,但它不可见(我测试的时候所有SeekBar的都可见所以我知道发生)
当然,我可以完成最愚蠢的解决方案并禁用ListView回收,但这会让用户体验非常糟糕,并且可能会使应用程序耗尽内存,并且使用LargeHeap是蹩脚的.所以以下方法是不可能的.
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
Run Code Online (Sandbox Code Playgroud)
我的问题:这有什么明显的解决方案吗?如何仅保留一行不被回收?我不会发布代码,直到它真的有必要,代码太大了.相反,我将发布与问题相关的重要部分:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
holder = null;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); …Run Code Online (Sandbox Code Playgroud)