815
AudioManager(音頻管理器):AudioManager am=(AudioManager)this.getSystemService(Service.AUDIO_SERVICE);int maxVol= am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//獲取最大音樂音量值(15最大) AudioManager.STREAM_VOICE_CALL 通話音量 AudioManager.STREAM_SYSTEM 系統音量 AudioManager.STREAM_RING 鈴聲音量 AudioManager.STREAM_ALARM 提示音音量int current=am.getStreamVolume(AudioManager.STREAM_MUSIC);setVolumeControlStream(int streamType)可以設置該Activity中音量控制鍵控制的音頻流
setVolumeControlStream(AudioManager.STREAM_MUSIC);
//設定調整音量為媒體音量,當暫停播放的時候調整音量就不會再默認調整鈴聲音量了adjustStreamVolume(int streamType,int direction,int flags)//按部調整手機指定類型的聲音的大小。第一個參數 指定聲音類型,第二個參數指定對聲音進行增大AudioManager.ADJUST_RAISE還是減小AudioManager.ADJUST_LOWER,第三個參數是調整聲音時的標志:如FLAG_SHOW_UI 指定調整聲音時顯示聲音進度條setStreamVolume(int streamType,int index,int flags)直接設置手機指定的類型音量值 flags:AudioManager.FLAG_PLAY_SOUNDam.setStreamMute(AudioManager.STREAM_MUSIC,isChecked);//根據isChecked確定是否需要靜音1.MediaPlayer mplayer=new MediaPlayer();
2.mplayer.reset();
3.mplayer.setDataSource(String path);
或 mplayer.setDataSource(FileDescriptor fd,long offset,long length); 或 mplayer.setDataSource(FileDescriptor fd);或 mplayer.setDataSource(Context context,Uri uri);
4.mplayer.prepare();
5.mplayer.start();
mplayer.setOnCompletionListener(new onCompletionListener())
mplayer.setOnPreparedListener(new onPreparedListener())
mplayer.setOnSeekCompeteListener(new onOnSeekCompeteListener())備注:AssetManager am=getAssets();AssetFileDescriptor afd=am.openFd(music);afd.getFileDescriptor();1.SoundPool soundpool=new SoundPOOL(10,AudioManager.STREAM_SYSTEM,5);//最多可容納10個音頻流,音頻的品質為5
2.HashMap<Integer,Integer> soundMap=new ....;
3.soundMap.put(1,soundPool.load(this,R.raw.bomb,1))//load方法加載指定音頻文件,并返回所加載的音頻Id,此處使用hashMap來管理這些音頻流,1 代表的是priority,目前沒有任何意義
load(FileDescriptor fd,long offset,long length,int priority);
load(AssetFileDescriptor afd,int priority);
load(String path,int priority);
4.soundpool.play(soundMap.get(1),1,1,0,0,1);//(int soundID, float leftVolume, float rightVolume, int priority, int loop, float )震動 Vibrator
1.Vibrator vibrator=(Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
2.vibrator.vibrate(2000)//控制手機震動2秒
或 vibrator.vibrate(long[]pattern,intrepeat)。(pattern的形式為new long[]{arg1,arg2,arg3,arg4......},其中以兩個一組的如arg1 和arg2為一組、arg3和arg4為一組,每一組的前一個代表等待多少毫 秒啟動vibrator,后一個代表vibrator持續多少毫秒停止,之后往復即 可。Repeat表示重復次數,當其為-1時,表示不重復只以pattern的方 式運行一次)。
3.vibrator.cancle();
<uses-permission android:name="android.permission.VIBRATE">傳感器 SensorManager
1.SensorManager sensormanager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
2.sensormanager.registerListener(this,sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);//為指定的sensor注冊監聽器(Listener,sensor,rate)第一個參數:監聽傳感器事件的監聽器,第二個參數:傳感器對象,第三個參數 獲取傳感器數據的頻率
其中sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);獲取指定類型的傳感器
3.implements SensorEventListener 重寫 public void onSensorChanged(SensorEvent event);{float[]values=event.values;//x.y.z軸方向上的加速度values[0],values[1],values[2]}//此方法在當傳感器的值發生變化時回調
public void onAccuracyChanged(Sensor sensor,int accuracy)//當傳感器精度改變時調用x = event.values[0]; // 手機橫向翻滾
// x>0 說明當前手機左翻 x<0右翻
y = event.values[1]; // 手機縱向翻滾
// y>0 說明當前手機下翻 y<0上翻
z = event.values[2]; // 屏幕的朝向
// z>0 手機屏幕朝上 z<0 手機屏幕朝下
如果當前手機是縱向屏幕: x>0 說明當前手機左翻 x<0右翻 y>0 說明當前手機下翻 y<0上翻 如果當前手機是橫向屏幕: x>0 說明當前手機下翻 x<0上翻 y>0 說明當前手機右翻 y<0左翻
總結
- 上一篇: Socket中send()函数和recv
- 下一篇: 要访问1KB的内存为啥需要10位地址线,