前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >009android初级篇之APP中使用系统相机相册等集成应用

009android初级篇之APP中使用系统相机相册等集成应用

作者头像
上善若水.夏
发布2018-09-28 10:35:57
6370
发布2018-09-28 10:35:57
举报
文章被收录于专栏:上善若水

009android初级篇之APP中使用系统相机相册等集成应用

android应用中使用相机功能,大致有两种方式实现:

  1. 直接调用系统内部的相机程序,显示的也是系统预设的界面(简单,只有简单的拍照功能);
  2. 自己去implement一个相机程序(不难,较具备弹性,但相对复杂);

权限

如果需要拍照功能,则需要在AndroidManifest.xml文件中添加权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.CAMERA"/> 

调用系统相机应用

这是第一种方式 在启动相机前先指定好图片的文件位置,通知intent,同时也保留在成员变量中。然后在函数中,可以直接打开该文件

代码语言:javascript
复制
private static  final  int CAMERA_REQUESTCODE=1;

String sFileFullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test.jpg";
Log.e("onNavi","file: "+sFileFullPath);
File file = new File(sFileFullPath);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, CAMERA_REQUESTCODE);

获取返回值

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUESTCODE) {
        if (resultCode == RESULT_OK) {
            ////Bitmap bmPhoto = (Bitmap) data.getExtras().get("data");
            // You can set bitmap to ImageView here  这里可以获得相片的缩略图
        }
    }
}

第二种方式:自定制camera 参考链接, 该功能我未实现 Android 自定义camera

同样的方法可以调用系统相册

代码语言:javascript
复制
 private static final  int REQUESTCODE_PICK=2;

Intent mIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(mIntent,REQUESTCODE_PICK);

在onActivityResult中获得选择的图片

代码语言:javascript
复制
if(requestCode == REQUESTCODE_PICK) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        Log.e(TAG,"Select image "+picturePath);
}

Intent常用的ACTION

1. Intent.Action_CALL

android.intent.action.CALL 呼叫指定的电话号码。

代码语言:javascript
复制
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:10086");
startActivity(intent);

2.Intent.Action.DIAL

String: action.intent.action.DIAL 调用拨号面板 Intent intent=new Intent(); intent.setAction(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086"); startActivity(intent);

3.Intent.Action.ALL_APPS

String: andriod.intent.action.ALL_APPS 列出所有的应用。

4. Intent.ACTION_CALL_PRIVILEGED

String:android.intent.action.CALL_PRIVILEGED 调用skype的action

代码语言:javascript
复制
    Intent intent = newIntent("android.intent.action.CALL_PRIVILEGED");  
   intent.setClassName("com.skype.raider",
    "com.skype.raider.Main");
   intent.setData(Uri.parse("tel:" + phone));  
    startActivity(intent); 

5. Intent.Action_CALL_BUTTON

String: android.action.intent.CALL_BUTTON. 相当于按“拨号”键。 Intent intent = new Intent(Intent.ACTION_CALL_BUTTON); startActivity(intent);

6. Telephony.SMS_RECEIVED

String: android.provider.Telephony.SMS_RECEIVED 接收短信的action <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> <data android:host="localhost"/> </intent-filter>

7. Intent.ACTION_GET_CONTENT

String: android.intent.action.GET_CONTENT 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音)

8. Intent.ACTION_BATTERY_LOW;

String: android.intent.action.BATTERY_LOW 表示电池电量低

9. Intent.ACTION_SEND

String: android.intent.action.Send 发送邮件的action

10. Intent.ACTION_CLOSE_SYSTEM_DIALOGS

当屏幕超时进行锁屏时,当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时,android系统都会广播此Action消息

11. Intent.ACTION_MAIN

String: android.intent.action.MAIN 标识Activity为一个程序的开始。

12. Intent.ACTION_POWER_CONNECTED;

插上外部电源时发出的广播

13 Intent.ACTION_POWER_DISCONNECTED;

已断开外部电源连接时发出的广播

14.Intent.ACTION_ANSWER

Stirng:android.intent.action.ANSWER 处理呼入的电话。

15 .Intent.ACTION_BUG_REPORT

String: android.intent.action.BUG_REPORT 显示Dug报告。

16. android.intent.action.MAIN

决定应用程序最先启动的Activity

17.android.intent.category.LAUNCHER

决定应用程序是否显示在程序列表里

代码语言:javascript
复制
如果只有一个activity的应用程序只声明了      android.intent.action.MAIN ,没有声明       android.intent.category.LAUNCHER,eclipse运行是将报错,桌面也不会有图标。
如果存在多个activity都声明了android.intent.action.MAIN与android.intent.category.LAUNCHER。将会有多个图标在桌面上。

action的操作有很多,需要的话,继续百度。

参考链接

Android 如何从系统图库中选择图片

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015.11.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 权限
  • 调用系统相机应用
  • 同样的方法可以调用系统相册
  • Intent常用的ACTION
    • 1. Intent.Action_CALL
      • 2.Intent.Action.DIAL
        • 3.Intent.Action.ALL_APPS
          • 4. Intent.ACTION_CALL_PRIVILEGED
            • 5. Intent.Action_CALL_BUTTON
              • 6. Telephony.SMS_RECEIVED
                • 7. Intent.ACTION_GET_CONTENT
                  • 8. Intent.ACTION_BATTERY_LOW;
                    • 9. Intent.ACTION_SEND
                      • 10. Intent.ACTION_CLOSE_SYSTEM_DIALOGS
                        • 11. Intent.ACTION_MAIN
                          • 12. Intent.ACTION_POWER_CONNECTED;
                            • 13 Intent.ACTION_POWER_DISCONNECTED;
                              • 14.Intent.ACTION_ANSWER
                                • 15 .Intent.ACTION_BUG_REPORT
                                  • 16. android.intent.action.MAIN
                                    • 17.android.intent.category.LAUNCHER
                                    • 参考链接
                                    相关产品与服务
                                    短信
                                    腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档