Android中打開相機、打開相冊進行圖片

這裏介紹在Android中實現相機調取、拍照片、獲取照片、存儲新路徑等已經打開相冊、選擇照片等功能android

首先看一下界面,很簡單網絡

配置讀取內存卡和調用照相頭的功能ide

?this

1spa

2.net

3code

4orm

5htm

6圖片

7

<!-- 使用網絡權限 -->

<uses-permission android:name="android.permission.INTERNET"/>

<!-- 寫sd卡的權限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- 讀sd卡權限 -->

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

下面是代碼的主題

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

public class TakePhotos extends Activity implements

android.view.View.OnClickListener {

Button takePhoto;

Bitmap photo;

String picPath;

Button capture;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_photo);

takePhoto = (Button) findViewById(R.id.button1);

capture = (Button) findViewById(R.id.capture);

takePhoto.setOnClickListener(this);

capture.setOnClickListener(this);

}

 

 

@Override

public void onClick(View viewid) {

switch (viewid.getId()) {

case R.id.button1: {// 打開相機

String state = Environment.getExternalStorageState();// 獲取內存卡可用狀態

if (state.equals(Environment.MEDIA_MOUNTED)) {

// 內存卡狀態可用

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

startActivityForResult(intent, 1);

} else {

// 不可用

Toast.makeText(TakePhotos.this, "內存不可用", Toast.LENGTH_LONG)

.show();

}

break;

}

case R.id.capture: {// 打開相冊

// 打開本地相冊

Intent i = new Intent(

Intent.ACTION_PICK,

android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

// 設定結果返回

startActivityForResult(i, 2);

break;

}

default:

break;

}

}

 

 

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

if (data != null) {

switch (requestCode) {

case 1:

// 兩種方式 獲取拍好的圖片

if (data.getData() != null || data.getExtras() != null) { // 防止沒有返回結果

Uri uri = data.getData();

if (uri != null) {

this.photo = BitmapFactory.decodeFile(uri.getPath()); // 拿到圖片

}

if (photo == null) {

Bundle bundle = data.getExtras();

if (bundle != null) {

photo = (Bitmap) bundle.get("data");

FileOutputStream fileOutputStream = null;

try {

// 獲取 SD 卡根目錄 生成圖片並

String saveDir = Environment

.getExternalStorageDirectory()

+ "/dhj_Photos";

// 新建目錄

File dir = new File(saveDir);

if (!dir.exists())

dir.mkdir();

// 生成文件名

SimpleDateFormat t = new SimpleDateFormat(

"yyyyMMddssSSS");

String filename = "MT" + (t.format(new Date()))

+ ".jpg";

// 新建文件

File file = new File(saveDir, filename);

// 打開文件輸出流

fileOutputStream = new FileOutputStream(file);

// 生成圖片文件

this.photo.compress(Bitmap.CompressFormat.JPEG,

100, fileOutputStream);

// 相片的完整路徑

this.picPath = file.getPath();

ImageView imageView = (ImageView) findViewById(R.id.imageView1);

imageView.setImageBitmap(this.photo);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (fileOutputStream != null) {

try {

fileOutputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

Toast.makeText(getApplicationContext(), "獲取到了",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(getApplicationContext(), "找不到圖片",

Toast.LENGTH_SHORT).show();

}

}

}

break;

case 2: {

//打開相冊並選擇照片,這個方式選擇單張

// 獲取返回的數據,這裏是android自定義的Uri地址

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();

// 將圖片顯示到界面上

ImageView imageView = (ImageView) findViewById(R.id.imageView1);

imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

break;

}

default:

break;

}

}

}

}

相關文章
相關標籤/搜索