Android的MediaPlayer的setVolume()怎么无效啊

mzhua78 2013-03-16 07:10:44
想只让本程序有声音,而不改变系统和其他的音量,代码如下,但是没一点反应啊
mPlayer = MediaPlayer.create(RingAndVibrateService.this,Uri.parse(settings.getString("ringtone", defaultNotice)));
mPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM);
mPlayer.setVolume(am.getStreamVolume(AudioManager.STREAM_SYSTEM), am.getStreamVolume(AudioManager.STREAM_SYSTEM));
mPlayer.start();
...全文
3083 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahnupeng 2014-11-27
  • 打赏
  • 举报
回复
引用 13 楼 zylove69 的回复:
把 mPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM); 换成 mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 或者 mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);//听筒模式 就可以了
正解
zylove69 2014-09-30
  • 打赏
  • 举报
回复
把 mPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM); 换成 mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 或者 mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);//听筒模式 就可以了
houhualiang 2014-03-13
  • 打赏
  • 举报
回复
ameyume 2013-03-17
  • 打赏
  • 举报
回复
刚想起来,原因不在audio及音量设置,是因为楼主没有走对MediaPlayer流程,start之前还需要执行prepare函数,prepare完成后才能执行start播放。
mzhua78 2013-03-17
  • 打赏
  • 举报
回复
嗯,找到原因,搞定了,Android太奇怪了,一定要用setDataSource方法才能用setVolume设置,谢谢了
引用 10 楼 ameyume 的回复:
刚想起来,原因不在audio及音量设置,是因为楼主没有走对MediaPlayer流程,start之前还需要执行prepare函数,prepare完成后才能执行start播放。
ameyume 2013-03-16
  • 打赏
  • 举报
回复
先不要用Uri.parse(settings.getString("ringtone", defaultNotice) 自己通过MediaPlayer的setDataSource方法设置一个sd卡里面的mp3文件试试能不能播放。
mzhua78 2013-03-16
  • 打赏
  • 举报
回复
因为我就是要在Service中启动一个提醒的声音,但在Service中没有这个方法,然后我并不是想去控制音量,我只是想不管系统各音乐流怎么样,在我的这个程序中提示音的音量大小由我自己固定,并且不受外面影响也不影响系统(不改变系统各种音量)
引用 7 楼 wangdong20 的回复:
在我们想播放音效或音乐之前,需要确定音量按钮控制了正确的音频流。为此,我们使用Context接口的另一个方法: context.setVolumeControlStream(AudioManager.STREAM_MUSIC); 一如既往,Context的实现仍然由我们的活动来负责。调用该方法之后,音量按钮就控制了该音乐流,后面我们就可使用它来输出我们的音效和……
wangdong20 2013-03-16
  • 打赏
  • 举报
回复
在我们想播放音效或音乐之前,需要确定音量按钮控制了正确的音频流。为此,我们使用Context接口的另一个方法: context.setVolumeControlStream(AudioManager.STREAM_MUSIC); 一如既往,Context的实现仍然由我们的活动来负责。调用该方法之后,音量按钮就控制了该音乐流,后面我们就可使用它来输出我们的音效和音乐。在活动的生命周期内我们只需要调用该方法一次,最好是在Activity.onCreate()方法中调用它。 http://blog.csdn.net/wangdong20/article/details/8567557
mzhua78 2013-03-16
  • 打赏
  • 举报
回复
改成Music也达不到目的,我是想这只是程序自己的音量,不改变其他地方的音量,也不收其他音量大小的影响,即使系统或者MUSIC音量为0这里也会有声音
引用 4 楼 ameyume 的回复:
Audio类型设置为AudioManager.STREAM_MUSIC,用STREAM_SYSTEM会改变系统音量的。
ameyume 2013-03-16
  • 打赏
  • 举报
回复
http://developer.android.com/reference/android/media/MediaPlayer.html#setVolume(float, float) 上一个说错了,楼主的代码不会修改系统音量。 楼主可以debug看看am.getStreamVolume(AudioManager.STREAM_SYSTEM)返回的音量值是多少,不行就设置一个固定音量值试试,如果是STREAM_MUSIC是15级音量(0-15,0表示静音)。STREAM_SYSTEM具体是几级音量记不清楚了。
引用 4 楼 ameyume 的回复:
Audio类型设置为AudioManager.STREAM_MUSIC,用STREAM_SYSTEM会改变系统音量的。
ameyume 2013-03-16
  • 打赏
  • 举报
回复
Audio类型设置为AudioManager.STREAM_MUSIC,用STREAM_SYSTEM会改变系统音量的。
mzhua78 2013-03-16
  • 打赏
  • 举报
回复
有的说要把mPlayer.setVolume(am.getStreamVolume(AudioManager.STREAM_SYSTEM), am.getStreamVolume(AudioManager.STREAM_SYSTEM));放在后面,可是试了还是没用
mzhua78 2013-03-16
  • 打赏
  • 举报
回复
不要沉啊,找了好久,还是没找到解决办法
mzhua78 2013-03-16
  • 打赏
  • 举报
回复
怎么没人呢?急啊
package com.hsy.Zxing.Activity; import java.io.IOException; import java.util.Vector; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Vibrator; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView; import com.google.zxing.BarcodeFormat; import com.google.zxing.Result; import com.hsy.Zxing.Gan.camera.CameraManager; import com.hsy.Zxing.Gan.decoding.CaptureActivityHandler; import com.hsy.Zxing.Gan.decoding.InactivityTimer; import com.hsy.Zxing.Gan.view.ViewfinderView; import com.zijunlin.Zxing.Demo.R; public class CaptureActivity extends Activity implements Callback { private CaptureActivityHandler handler; private ViewfinderView viewfinderView; private boolean hasSurface; private Vector decodeFormats; private String characterSet; private InactivityTimer inactivityTimer; private MediaPlayer mediaPlayer; private boolean playBeep; private static final float BEEP_VOLUME = 0.10f; private boolean vibrate; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 初始化 CameraManager CameraManager.init(getApplication()); viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); hasSurface = false; inactivityTimer = new InactivityTimer(this); } @Override protected void onResume() { super.onResume(); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (hasSurface) { initCamera(surfaceHolder); } else { surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } decodeFormats = null; characterSet = null; playBeep = true; AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE); if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { playBeep = false; } initBeepSound(); vibrate = true; } @Override protected void onPause() { super.onPause(); if (handler != null) { handler.quitSynchronously(); handler = null; } CameraManager.get().closeDriver(); } @Override protected void onDestroy() { inactivityTimer.shutdown(); super.onDestroy(); } private void initCamera(SurfaceHolder surfaceHolder) { try { CameraManager.get().openDriver(surfaceHolder); } catch (IOException ioe) { return; } catch (RuntimeException e) { return; } if (handler == null) { handler = new CaptureActivityHandler(this, decodeFormats, characterSet); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { if (!hasSurface) { hasSurface = true; initCamera(holder); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { hasSurface = false; } public ViewfinderView getViewfinderView() { return viewfinderView; } public Handler getHandler() { return handler; } public void drawViewfinder() { viewfinderView.drawViewfinder(); } public void handleDecode(final Result obj, Bitmap barcode) { inactivityTimer.onActivity(); playBeepSoundAndVibrate(); AlertDialog.Builder dialog = new AlertDialog.Builder(this); if (barcode == null) { dialog.setIcon(null); } else { Drawable drawable = new BitmapDrawable(barcode); dialog.setIcon(drawable); } dialog.setTitle("扫描结果"); dialog.setMessage(obj.getText()); dialog.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //用默认浏览器打开扫描得到的地址 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse(obj.getText()); intent.setData(content_url); startActivity(intent); finish(); } }); dialog.setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); dialog.create().show(); } private void initBeepSound() { if (playBeep && mediaPlayer == null) { // The volume on STREAM_SYSTEM is not adjustable, and users found it // too loud, // so we now play on the music stream. setVolumeControlStream(AudioManager.STREAM_MUSIC); mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnCompletionListener(beepListener); AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep); try { mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); file.close(); mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); mediaPlayer.prepare(); } catch (IOException e) { mediaPlayer = null; } } } private static final long VIBRATE_DURATION = 200L; private void playBeepSoundAndVibrate() { if (playBeep && mediaPlayer != null) { mediaPlayer.start(); } if (vibrate) { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); vibrator.vibrate(VIBRATE_DURATION); } } /** * When the beep has finished playing, rewind to queue up another one. */ private final OnCompletionListener beepListener = new OnCompletionListener() { public void onCompletion(MediaPlayer mediaPlayer) { mediaPlayer.seekTo(0); } }; }
模仿qq炫舞游戏做出的单机版游戏 package cn.itcast.game; import java.io.InputStream; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.SurfaceHolder.Callback; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import android.widget.RadioGroup.OnCheckedChangeListener; public class MainActivity extends Activity { AnimView mAnimView = null; public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 检测屏幕的方向:纵向或横向 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // 当前为横屏, 在此处添加额外的处理代码 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 当前为竖屏, 在此处添加额外的处理代码 } } public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); android.os.Process.killProcess(android.os.Process.myPid()); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 强制为横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); Display display = getWindowManager().getDefaultDisplay(); // 显示自定义的游戏View mAnimView = new AnimView(this, display.getWidth(), display.getHeight()); setContentView(mAnimView); } public boolean onTouchEvent(MotionEvent event) { // 获得触摸的坐标 int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mAnimView.UpdateEvent(x, y); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; } return false; } public class AnimView extends SurfaceView implements Callback, Runnable { private Paint mpaint = null; private Bitmap bitmap = null; private Context mContext = null; private Canvas mCanvas = null; private boolean mIsRunning = false; private Thread mthread = null; private SurfaceHolder mSurfaceHolder = null; private Bitmap bitmap_main_1 = null; private Bitmap bitmap_main_2 = null; private Bitmap bitmap_main_3 = null; private Bitmap bitmap_main_4 = null; private int temp = 0; private int bitmap_main_1_Width = 0; private int bitmap_main_1_Height = 0; private int bitmap_main_2_Width = 0; private int bitmap_main_2_Height = 0; private int bitmap_main_3_Width = 0; private int bitmap_main_3_Height = 0; private int bitmap_main_4_Width = 0; private int bitmap_main_4_Height = 0; private MediaPlayer mMediaPlayer = null; private SoundPool mSoundPool = null; private int button_sound = 0; private Bitmap bitmap_up = null; // 屏幕尺寸 private int mScreenWidth = 0; // private int mScreenHeight = 0; // 炫舞吧 图片尺寸 private int bitmap_up_width = 0; private Handler handler = new Handler() { public void handleMessage(Message msg) { try { Log.e("MainActivity", "wenxi11111"); dialog_show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; private RadioGroup m_RadioGroup = null; private RadioButton m_Radio2 = null; private RadioButton m_Radio1 = null; private RadioButton m_Radio3 = null; protected int choose_music = 1; protected int music_play = 0; public int start_music = 0; protected int now_checkid = 0; public AnimView(Context context, int width, int height) { super(context); mScreenWidth = width; // mScreenHeight = height; mContext = context; mpaint = new Paint(); /** 获取mSurfaceHolder **/ mSurfaceHolder = getHolder(); mSurfaceHolder.addCallback(this); init(); } public void dialog_show() { Log.e("MainActivity", "wenxi2222222"); AlertDialog.Builder builder = new AlertDialog.Builder(mContext); Log.e("MainActivity", "wenxi2222223"); LayoutInflater inflater = LayoutInflater.from(mContext); Log.e("MainActivity", "wenxi2222224"); final View textEntryView = inflater.inflate(R.layout.music, null); Log.e("MainActivity", "wenxi2222225"); builder.setIcon(R.drawable.xiyangyang_1); builder.setTitle("请选择背景音乐"); builder.setCancelable(false); builder.setView(textEntryView); Log.e("MainActivity", "wenxi2222226"); m_RadioGroup = (RadioGroup) textEntryView .findViewById(R.id.RadioGroup01); m_Radio1 = (RadioButton) textEntryView .findViewById(R.id.RadioButton1); m_Radio2 = (RadioButton) textEntryView .findViewById(R.id.RadioButton2); m_Radio3 = (RadioButton) textEntryView .findViewById(R.id.RadioButton3); // now_checkid = m_RadioGroup.getCheckedRadioButtonId(); m_RadioGroup.check(now_checkid); m_RadioGroup .setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == m_Radio1.getId()) { Log.e("MainActivity", Integer .toString(checkedId)); Log.e("MainActivity", Integer.toString(m_Radio1 .getId())); choose_music = 1; Toast toast = Toast.makeText(mContext, "你选择了music1", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio2.getId()) { choose_music = 2; Toast toast = Toast.makeText(mContext, "你选择了music2", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio3.getId()) { choose_music = 3; Toast toast = Toast.makeText(mContext, "你选择了music3", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } now_checkid = checkedId; } }); builder.setPositiveButton("保存", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel();// 取消弹出框 if (choose_music == 1) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_1); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 2) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 3) { mMediaPlayer.release(); mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_3); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } } }); builder.setNegativeButton("放弃", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel();// 取消弹出框 choose_music = start_music; } }); builder.create().show(); } private void init() { // 主界面静态图 bitmap = ReadBitmap(mContext, R.drawable.main_2_picture); bitmap_up = ReadBitmap(mContext, R.drawable.xuanwuba); bitmap_up_width = bitmap_up.getWidth(); bitmap_main_1 = ReadBitmap(mContext, R.drawable.main_1); bitmap_main_2 = ReadBitmap(mContext, R.drawable.main_2); bitmap_main_3 = ReadBitmap(mContext, R.drawable.main_3); bitmap_main_4 = ReadBitmap(mContext, R.drawable.main_4); bitmap_main_1_Width = bitmap_main_1.getWidth(); bitmap_main_1_Height = bitmap_main_1.getHeight(); bitmap_main_2_Width = bitmap_main_2.getWidth(); bitmap_main_2_Height = bitmap_main_2.getHeight(); bitmap_main_3_Width = bitmap_main_3.getWidth(); bitmap_main_3_Height = bitmap_main_3.getHeight(); bitmap_main_4_Width = bitmap_main_4.getWidth(); bitmap_main_4_Height = bitmap_main_4.getHeight(); // 主界面一个动态图显示 // mAnimation = new Animation(mContext,new int // []{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable.f,R.drawable.g,R.drawable.h,R.drawable.i,R.drawable.j},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.a_1,R.drawable.a_2,R.drawable.a_3,R.drawable.a_4,R.drawable.a_5,R.drawable.a_6,R.drawable.a_7,R.drawable.a_8,R.drawable.a_9,R.drawable.a_10,R.drawable.a_11,R.drawable.a_12,R.drawable.a_13,R.drawable.a_14,R.drawable.a_15,R.drawable.a_16,R.drawable.a_17,R.drawable.a_18,R.drawable.a_19,R.drawable.a_20},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.b_1,R.drawable.b_2,R.drawable.b_3,R.drawable.b_4,R.drawable.b_5,R.drawable.b_6,R.drawable.b_7,R.drawable.b_8,R.drawable.b_9,R.drawable.b_10, // R.drawable.b_11,R.drawable.b_12,R.drawable.b_14,R.drawable.b_15,R.drawable.b_16,R.drawable.b_17,R.drawable.b_18,R.drawable.b_19,R.drawable.b_20, // R.drawable.b_21,R.drawable.b_22,R.drawable.b_23,R.drawable.b_24,R.drawable.b_25,R.drawable.b_26,R.drawable.b_27,R.drawable.b_28,R.drawable.b_29,R.drawable.b_30, // R.drawable.b_31,R.drawable.b_32,R.drawable.b_33 // },true); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); /** 创建一个声音播放池 **/ // 参数1为声音池同时播放的流的最大数量 // 参数2为播放流的类型 // 参数3为音乐播放效果 setmSoundPool(new SoundPool(2, AudioManager.STREAM_MUSIC, 100)); } public void UpdateEvent(int x, int y) { temp = IsClick(x, y); switch (temp) { case 1: button_sound++; Intent intent = new Intent(MainActivity.this, MenuActivity.class); startActivity(intent); break; case 2: button_sound++; if (button_sound % 2 == 1) { mMediaPlayer.setVolume(0, 0); } else { mMediaPlayer.setVolume(2, 2); } break; case 3: handler.sendMessage(new Message()); start_music = choose_music; mIsRunning = false; break; case 4: mMediaPlayer.release(); android.os.Process.killProcess(android.os.Process.myPid()); break; } } private int IsClick(int x, int y) { int a = 0; if (x >= 170 + 20 && x <= 170 + bitmap_main_1_Width - 20 && y >= 110 + 20 && y <= 110 + bitmap_main_1_Height - 20) a = 1; else if (x >= 170 + 35 && x <= 170 + bitmap_main_2_Width - 35 && y >= 160 + 20 && y <= 160 + bitmap_main_2_Height - 20) a = 2; else if (x >= 170 + 20 && x <= 170 + bitmap_main_3_Width - 40 && y >= 210 + 20 && y <= 210 + bitmap_main_3_Height - 20) a = 3; else if (x >= 170 + 40 && x <= 170 + bitmap_main_4_Width - 35 && y >= 260 + 20 && y <= 260 + bitmap_main_4_Height - 20) a = 4; return a; } private void Draw() { mCanvas.drawBitmap(bitmap, 0, 0, mpaint); mCanvas.drawBitmap(bitmap_up, (mScreenWidth - bitmap_up_width) / 2, 5, mpaint); mCanvas.drawBitmap(bitmap_main_1, 170, 110, mpaint); mCanvas.drawBitmap(bitmap_main_2, 170, 160, mpaint); mCanvas.drawBitmap(bitmap_main_3, 170, 210, mpaint); mCanvas.drawBitmap(bitmap_main_4, 170, 260, mpaint); mMediaPlayer.start(); mMediaPlayer.setVolume(2, 2); } private Bitmap ReadBitmap(Context context, int id) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; InputStream is = context.getResources().openRawResource(id); return BitmapFactory.decodeStream(is, null, opt); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = true; mthread = new Thread(this); mthread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = false; } @Override public void run() { while (mIsRunning) { synchronized (mSurfaceHolder) { mCanvas = mSurfaceHolder.lockCanvas(); Draw(); mSurfaceHolder.unlockCanvasAndPost(mCanvas); } try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } } } public void setmSoundPool(SoundPool mSoundPool) { this.mSoundPool = mSoundPool; } public SoundPool getmSoundPool() { return mSoundPool; } } }

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧