首页 > 编程技术 > android

Android(安卓)开发中AudioManager声音管理用法

发布时间:2016-9-20 19:59

在Android开发中AudioManager(声音管理)是我们常用的一个函数了,这个我们可以定义应用程序来控制手机的声音模式,包括手机中常用的声音选项了,下面我来介绍一下操作办法。

AudioManager 类位于 android.Media 包中,该类提供访问控制音量和钤声模式的操作

以下分别是AudioManager设置声音模式和调整声音大小的方法。

 如何获取声音管理器:

 代码如下 复制代码

AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

 

里面主要的方法:

A、设置声音模式

 代码如下 复制代码

//声音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
//静音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//震动模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);


B、调整声音大小

 代码如下 复制代码

//减少声音音量
AudioManager.adjustVolume(AudioManager.ADJUST_LOWER,  0);
//调大声音音量
AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);

(当传入的第一个参数为 AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。)

 
getMode()获取音频模式

getRingerMode()获取铃声震动模式

AudioManager
 

public void setStreamMute (int streamType, boolean state)


静音或不静音音频流。

静音命令被保护以免客户端进程死亡:若具有流上的活动静音请求的进程死亡,这个流会自动取消静音。

对于给定的流,静音请求是累计的:AudioManager会从一个或多个客户端接收数个静音请求,只有当接收到相同数目的取消静音请求时流才会取消静音。

为了更好的用户体验,应该程序必须在onPause()中取消已静音流,若合适在onResume()中再次静音


这个方法只能用于代替音频设置的平台范围管理应用程序或主要电话应用程序。


参数

streamType                 欲静音/取消静音的流。

state                           请求静音状态:若为true,静音;若为false,取消静音。

 

这里如果使用了和手机震动有关的模式,记得添加权限。android.permission.VIBRATE哦!

本文章来给各位同学详细介绍关于Android 4.0系统的静态路由功能设置方法 ,各位同学可进入参考。

Android 4.0系统的静态路由功能设置方法!如下:

  1、打开WIFI

  2、点击你需要连接的WIFI接入点名称。

  3、输入密码以后,把输入法隐藏一下就会发现“显示密码”和“显示高级选项”。

  4、勾选--显示高级选项。

  5、下拉一下会出现“IP设置”。

  6、将选项中的DHCP改为--静态。

  7、改为静态以后,下面继续会出现几项,填写方式如下:

  ==IP地址:你手机的IP地址,一般是192.168.1.XXX(XXX可以在1-255之间,不能跟路由下的任一设备设置为一样的IP地址)

  ==网关:你路由器的IP地址(大多数的路由默认IP会是192.168.1.1)

  ==网络前缀长度:不用修改

  ==域名1:WIFI接入点所使用的IP地址,一般是192.168.1.1或者192.168.0.1,具体要参考路由上的设置

  ==域名2:跟域名1一样就可以了
a

有时我们需要换手机时我们需要把手机中联系导入SIM卡中,这样换手机也就方便了许多,下面我来给大家介绍手机导出到SIM卡方法。

具体步骤

1. 在手机中我们点击【联系人】如图所示。

 

 2. 然后点击如下图的【联系人】菜单。

 

 3. 在手机的【菜单】键,选择【导入/导出】。

  

4. 点击【导出到SIM卡】菜单。

  

5. 因为要备份所以我点击【全选】为例,选择好后,点击屏幕右上角的【完成】。

  

6. 最后点击【确定】按钮。

  

7. 屏幕上显示复制进度,结束后显示“已复制”。

友情提示

其它三星安卓系统手机都可以把手机中联系人导出到SIM卡了,大家都可参照操作,这里就不介绍了。

sql语句是指我们在安卓开发中会经常碰到有大量的地方要查询数据库了,下面我来介绍在安卓中使用sql语句吧。

SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它


SQLite的特点:

轻量级

SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态 库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。

不需要"安装"

SQLite的核心引擎本身不依赖第三方的软件,使用它也不需要"安装"。有点类似那种绿色软件。

单一文件 

数据库中所有的信息(比如表、视图等)都包含在一个文件内。这个文件可以自由复制到其它目录或其它机器上。

跨平台/可移植性

除了主流操作系统 windows,linux之后,SQLite还支持其它一些不常用的操作系统。

弱类型的字段

同一列中的数据可以是不同类型

开源

这个相信大家都懂的!

 3.SQLite数据类型

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种常用的数据类型:

NULL: 这个值为空值

VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。

CHAR(n):长度固定为n的字串,n不能超过 254。

INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.

REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。

DATA :包含了 年份、月份、日期。

TIME: 包含了 小时、分钟、秒。

相信学过数据库的童鞋对这些数据类型都不陌生的!!!!!!!!!!

一、创建/删除表

 代码如下 复制代码

String sql="Create table "+TABLE_NAME+"("+FIELD_ID+" integer primary key autoincrement,"  +FIELD_TITLE+" text );";

db.execSQL(sql);

String sql=" DROP TABLE IF EXISTS "+TABLE_NAME;

db.execSQL(sql);

 

二、查询

从表中查询数据(in)   SELECT * FROM meta where media_id in (1,2,9);

 

三、插入

 代码如下 复制代码

SQLiteDatabase db=this.getWritableDatabase();

ContentValues cv=new ContentValues();

cv.put(FIELD_TITLE, Title);

long row=db.insert(TABLE_NAME, null, cv);

 

四、更新

 代码如下 复制代码

SQLiteDatabase db=this.getWritableDatabase();

String where=FIELD_ID+"=?";

String[] whereValue={Integer.toString(id)};

ContentValues cv=new ContentValues();

cv.put(FIELD_TITLE, Title);

db.update(TABLE_NAME, cv, where, whereValue);

 

五、删除

 代码如下 复制代码

SQLiteDatabase db=this.getWritableDatabase();

String where=FIELD_ID+"=?";

String[] whereValue={Integer.toString(id)};

db.delete(TABLE_NAME, where, whereValue);

昨天在做一个安卓小应用程序,要实现调用系统相机程序实现拍照,然后把拍的照片返回给我的程序进行剪辑功能,我们主要是用到了Camera类,下面我总结了一些操作方法,下面分享给大家。

调用系统照相机拍照并剪辑


在Android开发过程中,很多时候我们都需要调用照相机拍照,尤其在发布微博的时候。

自己继承Camera类写一个拍照功能显然不是最好的方案,因为我们不能考虑的非常全面。

这个时候,调用系统的照相机无疑是一个很好的解决方法。

下面,我们就写一个调用系统照相机拍照并对照片进行剪辑。

 

 代码如下 复制代码

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/","temp.jpg")));

 startActivityForResult(intent, 1);

 

上面的代码就是调用系统照相机拍照,并保存到sdcard目录下temp.jpg

但这个时候还不够,因为通常情况,照相机拍的照片尺寸都很大,显然不能用于上传,我们需要对照片进行剪辑。

 

 代码如下 复制代码

 public void startPhotoZoom(Uri uri) {

 Intent intent = new Intent("com.android.camera.action.CROP");

 intent.setDataAndType(uri, IMAGE_UNSPECIFIED);

 intent.putExtra("crop", "true");

 // aspectX aspectY 是宽高的比例

 intent.putExtra("aspectX", 1);

 intent.putExtra("aspectY", 1);

 // outputX, outputY 是裁剪图片宽高

 intent.putExtra("outputX", 250);

 intent.putExtra("outputY", 250);

 intent.putExtra("return-data", true);

 startActivityForResult(intent, PHOTORESOULT);

 }

 

上面的代码实现了图片的剪辑,我们只需要传入相应的Uri即可,接下来我们传入Uri。

 

 代码如下 复制代码

 File picture = new File(Environment.getExternalStorageDirectory()+"/" + "temp.jpg");

 startPhotoZoom(Uri.fromFile(picture));

 

当然,剪辑完了,我们肯定要拿到剪辑后的照片。

 

 代码如下 复制代码

 if (requestCode == PHOTORESOULT) {

 Bundle extras = data.getExtras();

 if (extras != null) {

 Bitmap photo = extras.getParcelable("data");

 ByteArrayOutputStream stream = new ByteArrayOutputStream();

 if(photo!=null){

 photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 – 100)压缩文件

 pic.setImageBitmap(photo);

 }

 }

 }

 


android调用系统照相机拍照并剪辑


这样,我们就通过调用系统照相机,实现拍照并剪辑图片的功能。


1.调用系统的照相机程序
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(intent, TAKE_PHOTO_WITH_DATA);

2.在onActivityResult中处理返回的data
final Bitmap photo = data.getParcelableExtra("data");
如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上
imageView.setImageBitmap(photo);
如果需要做剪切处理,就继续向下执行

3.做剪切处理

 代码如下 复制代码
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");
        intent.putExtra("data", data);
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", 128);
        intent.putExtra("outputY", 128);
        intent.putExtra("return-data", true);
startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

4.在onActivityResult中处理
与第二步相同。

完整代码:

 代码如下 复制代码

public class SdCardUriTestActivity extends Activity {
    /** Called when the activity is first created. */
    private Button btnTake = null;
    private ImageView lblImage = null;
  
    private static final int PHOTO_PICKED_WITH_DATA = 3021;
    private static final int CAMERA_WITH_DATA = 3023;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        btnTake = (Button)findViewById(R.id.btnTake);
        lblImage = (ImageView)findViewById(R.id.lblImage);
        btnTake.setOnClickListener(new View.OnClickListener() {
          
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, CAMERA_WITH_DATA);
            }
        });
      
    }
  
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if(resultCode!=RESULT_OK)
            return;
        switch(requestCode){
        case CAMERA_WITH_DATA:
            final Bitmap photo = data.getParcelableExtra("data");
            if(photo!=null){
                doCropPhoto(photo);
            }
        case PHOTO_PICKED_WITH_DATA:
            Bitmap photo1 = data.getParcelableExtra("data");
            if(photo1!=null){
                lblImage.setImageBitmap(photo1);
            }
          
        }
    }
  
    protected void doCropPhoto(Bitmap data){
        Intent intent = getCropImageIntent(data);
        startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
    }
  
    public static Intent getCropImageIntent(Bitmap data) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");
        intent.putExtra("data", data);
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", 128);
        intent.putExtra("outputY", 128);
        intent.putExtra("return-data", true);
        return intent;
    }
}

布局文件略

标签:[!--infotagslink--]

您可能感兴趣的文章: