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

 更新时间:2016年9月20日 19:59  点击:2340
在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--]

相关文章

  • 苹果告别“高大上”,越来越向安卓和中国用户靠近

    “一起,让我们将这个世界变得更好。”苹果首席执行官蒂姆 库克对着台下5000多名开发者说道,声音略有些沙哑和颤抖。...2016-07-04
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 详解redis desktop manager安装及连接方式

    这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • 安卓开发之设置密码只能输入字母和数字的组合

    设置登录密码我们一般会有限制的如由什么组合了,下面我们来看一篇关于安卓开发之设置密码只能输入字母和数字的组合方法,具体的细节如下所示。 无论是电脑还是手机...2016-09-20
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • 自动设置安卓手机wifi代理的PowerShell脚本

    这篇文章主要介绍了自动设置安卓手机wifi代理的PowerShell脚本,帮助大家进行抓包测试,感兴趣的朋友可以了解下...2020-10-17
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 安卓开发之Intent传递Object与List教程

    下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20