當前位置:首頁 » 安卓系統 » android多張圖片上傳

android多張圖片上傳

發布時間: 2023-08-22 05:13:33

⑴ 【Android開發】怎麼在ListView中做一個圖片批量上傳的隊列

先是兩個layout:
1、main.xml

復制代碼
復制代碼
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent">
6 <ListView
7 android:layout_width="fill_parent"
8 android:layout_height="fill_parent"
9 android:focusable="false"
10 android:id="@+id/lvImageList" >
11 </ListView>
12 </LinearLayout>
復制代碼
復制代碼
2、listitem.xml

復制代碼
復制代碼
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="horizontal"
4 android:layout_width="fill_parent"
5 android:layout_height="?android:attr/listPreferredItemHeight">
6 <ImageView
7 android:id="@+id/itemImgImageInfo"
8 android:layout_marginTop="4dip"
9 android:layout_marginBottom="4dip"
10 android:layout_width="?android:attr/listPreferredItemHeight"
11 android:layout_height="?android:attr/listPreferredItemHeight">
12 </ImageView>
13 <TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
14 android:layout_width="fill_parent"
15 android:layout_height="fill_parent"
16 android:paddingLeft="4dip"
17 android:mode="twoLine">
18 <CheckedTextView
19 android:id="@+id/itemChkImageInfo"
20 android:layout_width="fill_parent"
21 android:layout_height="wrap_content"
22 android:gravity="center_vertical"
23 android:textAppearance="?android:attr/textAppearanceSmall"
24 android:checkMark="?android:attr/listChoiceIndicatorMultiple">
25 </CheckedTextView>
26 <TextView
27 android:id="@+id/itemTxtImageInfo"
28 android:layout_width="fill_parent"
29 android:layout_height="wrap_content"
30 android:gravity="center_vertical|top"
31 android:layout_marginBottom="4dip"
32 android:layout_below="@+id/itemChkImageInfo"
33 android:textAppearance="?android:attr/textAppearanceSmall">
34 </TextView>
35 </TwoLineListItem>
36 </LinearLayout>
復制代碼
復制代碼
接著是代碼:
復制代碼
復制代碼
1 package com.android.MultipleChoiceImageList;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import android.app.Activity;
9 import android.content.Context;
10 import android.database.Cursor;
11 import android.graphics.Bitmap;
12 import android.net.Uri;
13 import android.os.Bundle;
14 import android.provider.MediaStore;
15 import android.provider.MediaStore.Images;
16 import android.view.LayoutInflater;
17 import android.view.View;
18 import android.view.ViewGroup;
19 import android.widget.AdapterView;
20 import android.widget.CheckedTextView;
21 import android.widget.ImageView;
22 import android.widget.ListView;
23 import android.widget.SimpleAdapter;
24 import android.widget.TextView;
25 import android.widget.AdapterView.OnItemClickListener;
26
27 public class MainActivity extends Activity {
28
29 private ListView lvImageList;
30
31 private String imageID= "imageID";
32 private String imageName = "imageName";
33 private String imageInfo = "imageInfo";
34
35 private ArrayList<String> fileNames = new ArrayList<String>();
36
37 private mAdapter;
38
39 /** Called when the activity is first created. */
40 @Override
41 public void onCreate(Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.main);
44
45 lvImageList=(ListView) this.findViewById(R.id.lvImageList);
46 lvImageList.setItemsCanFocus(false);
47 lvImageList.setOnItemClickListener(new OnItemClickListener() {
48 @Override
49 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
50
51 CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.itemChkImageInfo);
52 checkedTextView.toggle();
53 mAdapter.setCheckItem(position, checkedTextView.isChecked());
54 }
55 });
56 try{
57 String[] from = {imageID, imageName, imageInfo};
58 int[] to = {R.id.itemImgImageInfo, R.id.itemChkImageInfo, R.id.itemTxtImageInfo};
59 mAdapter = new (MainActivity.this, GetImageList(), R.layout.listitem, from, to);
60 lvImageList.setAdapter(mAdapter);
61 }
62 catch(Exception ex){
63 return;
64 }
65 }
66
67 //獲取圖片列表
68 private ArrayList<Map<String, String>> GetImageList(){
69
70 ArrayList<Map<String, String>> imageList = new ArrayList<Map<String,String>>();
71 HashMap<String, String> imageMap;
72
73 //讀取SD卡中所有圖片
74 Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
75 String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME,MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE};
76 String selection = MediaStore.Images.Media.MIME_TYPE + "=?";
77 String[] selectionArg ={"image/jpeg"};
78 Cursor mCursor = this.managedQuery(uri, projection, selection, selectionArg, MediaStore.Images.Media.DISPLAY_NAME);
79 imageList.clear();
80 if (mCursor != null) {
81 mCursor.moveToFirst();
82 while (mCursor.getPosition() != mCursor.getCount())
83 {
84 imageMap= new HashMap<String, String>();
85 imageMap.put(imageID, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media._ID)));
86 imageMap.put(imageName, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)));
87 imageMap.put(imageInfo, " " + (mCursor.getLong(mCursor.getColumnIndex(MediaStore.Images.Media.SIZE))/1024)+"KB");
88 imageList.add(imageMap);
89 fileNames.add(mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
90 mCursor.moveToNext();
91 }
92 mCursor.close();
93 }
94 return imageList;
95 }
96
97 //可多選圖片列表適配器
98 class extends SimpleAdapter {
99
100 private Map<Integer, Boolean> map;
101 private List<Integer> state;
102 private List<? extends Map<String, ?>> mList;
103
104 LayoutInflater mInflater;
105
106 public (Context context, List<Map<String, String>> data, int resource, String[] from, int[] to) {
107 super(context, data, resource, from, to);
108 map = new HashMap<Integer, Boolean>();
109 mInflater = LayoutInflater.from(context);
110 mList = data;
111 for(int i = 0; i < data.size(); i++) {
112 map.put(i, false);
113 }
114 state = new ArrayList<Integer>();
115 }
116
117 @Override
118 public int getCount() {
119 return mList.size();
120 }
121
122 @Override
123 public Object getItem(int position) {
124 return position;
125 }
126
127 @Override
128 public long getItemId(int position) {
129 return position;
130 }
131
132 //設置條目選中狀態
133 public void setCheckItem(int position, Boolean isChecked){
134 map.put(position, isChecked);
135 if (state.contains(position))
136 state.remove((Object)position);
137 if (isChecked){
138 state.add(position);
139 }
140 }
141
142 //獲取列表中已選中條目
143 public long[] getCheckItemIds(){
144 int count = state.size();
145 long[] ids = new long[count];
146 for (int i = 0; i < count; i++) {
147 ids[i]= (long)state.get(i);
148 }
149 return ids;
150 }
151
152 @Override
153 public View getView(int position, View convertView, ViewGroup parent) {
154 if(convertView == null) {
155 convertView = mInflater.inflate(R.layout.listitem, null);
156 }
157
158 CheckedTextView checkedTextView = (CheckedTextView) convertView.findViewById(R.id.itemChkImageInfo);
159 checkedTextView.setChecked(map.get(position));
160 checkedTextView.setText((String)mList.get(position).get(imageName));
161
162 TextView textView = (TextView) convertView.findViewById(R.id.itemTxtImageInfo);
163 textView.setText((String)mList.get(position).get(imageInfo));
164
165 //顯示圖片縮略圖
166 ImageView image = (ImageView) convertView.findViewById(R.id.itemImgImageInfo);
167 Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong((String)mList.get(position).get(imageID)), Images.Thumbnails.MICRO_KIND, null);
168 image.setImageBitmap(bm);
169
170 return convertView;
171 }
172 }
173 }

⑵ 七牛雲存儲Android端可以一次上傳多張圖片嗎

只能上傳一張照片,
如果要上傳多張的話,
可以把幾張照片拼起來做成一張照片再上傳

⑶ android怎樣上傳圖片到伺服器

界面很簡單,點擊 【選擇圖片】,從圖庫里選擇圖片,顯示到下面的imageview里,點擊上傳,就會上傳到指定的伺服器

布局文件:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="選擇圖片"
android:id="@+id/selectImage"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="上傳圖片"
android:id="@+id/uploadImage"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
/>
</LinearLayout>

Upload Activity:
?

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

public class Upload extends Activity implements OnClickListener {
private static String requestURL = "http://192.168.1.212:8011/pd/upload/fileUpload.do";
private Button selectImage, uploadImage;
private ImageView imageView;

private String picPath = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.upload);

selectImage = (Button) this.findViewById(R.id.selectImage);
uploadImage = (Button) this.findViewById(R.id.uploadImage);
selectImage.setOnClickListener(this);
uploadImage.setOnClickListener(this);

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

}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.selectImage:
/***
* 這個是調用android內置的intent,來過濾圖片文件 ,同時也可以過濾其他的
*/
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 1);
break;
case R.id.uploadImage:
if (picPath == null) {

Toast.makeText(Upload.this, "請選擇圖片!", 1000).show();
} else {
final File file = new File(picPath);

if (file != null) {
String request = UploadUtil.uploadFile(file, requestURL);
uploadImage.setText(request);
}
}
break;
default:
break;
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
/**
* 當選擇的圖片不為空的話,在獲取到圖片的途徑
*/
Uri uri = data.getData();
Log.e(TAG, "uri = " + uri);
try {
String[] pojo = { MediaStore.Images.Media.DATA };

Cursor cursor = managedQuery(uri, pojo, null, null, null);
if (cursor != null) {
ContentResolver cr = this.getContentResolver();
int colunm_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path = cursor.getString(colunm_index);
/***
* 這里加這樣一個判斷主要是為了第三方的軟體選擇,比如:使用第三方的文件管理器的話,你選擇的文件就不一定是圖片了,
* 這樣的話,我們判斷文件的後綴名 如果是圖片格式的話,那麼才可以
*/
if (path.endsWith("jpg") || path.endsWith("png")) {
picPath = path;
Bitmap bitmap = BitmapFactory.decodeStream(cr
.openInputStream(uri));
imageView.setImageBitmap(bitmap);
} else {
alert();
}
} else {
alert();
}

} catch (Exception e) {
}
}

super.onActivityResult(requestCode, resultCode, data);
}

private void alert() {
Dialog dialog = new AlertDialog.Builder(this).setTitle("提示")
.setMessage("您選擇的不是有效的圖片")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
picPath = null;
}
}).create();
dialog.show();
}

}

這個才是重點 UploadUtil:
?

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

public class UploadUtil {
private static final String TAG = "uploadFile";
private static final int TIME_OUT = 10 * 1000; // 超時時間
private static final String CHARSET = "utf-8"; // 設置編碼
/**
* 上傳文件到伺服器
* @param file 需要上傳的文件
* @param RequestURL 請求的rul
* @return 返回響應的內容
*/
public static int uploadFile(File file, String RequestURL) {
int res=0;
String result = null;
String BOUNDARY = UUID.randomUUID().toString(); // 邊界標識 隨機生成
String PREFIX = "--", LINE_END = "\r\n";
String CONTENT_TYPE = "multipart/form-data"; // 內容類型

try {
URL url = new URL(RequestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(TIME_OUT);
conn.setConnectTimeout(TIME_OUT);
conn.setDoInput(true); // 允許輸入流
conn.setDoOutput(true); // 允許輸出流
conn.setUseCaches(false); // 不允許使用緩存
conn.setRequestMethod("POST"); // 請求方式
conn.setRequestProperty("Charset", CHARSET); // 設置編碼
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary="+ BOUNDARY);

if (file != null) {
/**
* 當文件不為空時執行上傳
*/
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
StringBuffer sb = new StringBuffer();
sb.append(PREFIX);
sb.append(BOUNDARY);
sb.append(LINE_END);
/**
* 這里重點注意: name裡面的值為伺服器端需要key 只有這個key 才可以得到對應的文件
* filename是文件的名字,包含後綴名
*/

sb.append("Content-Disposition: form-data; name=\"file\"; filename=\""
+ file.getName() + "\"" + LINE_END);
sb.append("Content-Type: application/octet-stream; charset="
+ CHARSET + LINE_END);
sb.append(LINE_END);
dos.write(sb.toString().getBytes());
InputStream is = new FileInputStream(file);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = is.read(bytes)) != -1) {
dos.write(bytes, 0, len);
}
is.close();
dos.write(LINE_END.getBytes());
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END)
.getBytes();
dos.write(end_data);
dos.flush();
/**
* 獲取響應碼 200=成功 當響應成功,獲取響應的流
*/
res = conn.getResponseCode();
Log.e(TAG, "response code:" + res);
if (res == 200) {
Log.e(TAG, "request success");
InputStream input = conn.getInputStream();
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = input.read()) != -1) {
sb1.append((char) ss);
}
result = sb1.toString();
Log.e(TAG, "result : " + result);
} else {
Log.e(TAG, "request error");
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
}

⑷ android 怎麼多圖上傳 okhttp

android上傳圖片是先將圖片文件轉換成流文件:可用以下代碼轉換流文件,imgPath為圖片的完整地址
//圖片轉化成base64字元串
public static String imgToBase64(String imgPath) {
InputStream in = null;
byte[] data = null;
//讀取圖片位元組數組
try {
in = new FileInputStream(imgPath);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e){
e.printStackTrace();
}
//對位元組數組Base64編碼
sun.misc.BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);//返回Base64編碼過的位元組數組字元串
}
然後圖片文件就成為一串字元串啦,傳遞方法和普通字元串一樣,多圖使用分號隔開即可,後台收到後直接將流文件轉換成圖片保存即可。

⑸ android 文件流的方式多張圖片上傳,並多個參數

android 開發中圖片上傳是很正常的,有兩種可用的方式:

下面我們就說明一下以文件流上傳圖片的方式, 實現網路框架是Retrofit

測試上傳3張手機sd卡中的圖片,並傳人了參數EquipmentCode, Description, ReportUserCode等

其中的思路是: Post的方式,Content-Type:multipart/form-data的類型進行上傳文件的。

其中MultipartBody是RequestBody的擴展,

看看請求頭的信息, 請求中攜帶了所有信(如果介面開發人員說不能收到, 叫他自己想想,截圖給他,哈哈哈:)

上面的是上傳了3張圖片,如果一張,只要傳一個就行!

就這樣,圖片上傳的兩種方式ok拉,測試通過的,保證正確!

參考: https://www.jianshu.com/p/acfefb0a204f

⑹ Android圖片批量上傳怎麼保證上傳順序

我一般都是通過遍歷集合的方式來上傳圖片。而且一般都不會去管這個上傳的順序,只需要服務端按你需要返回數據就可以了

⑺ 為什麼在安卓4.0上可以運行憤怒的小鳥這一類的小游戲游戲,卻不能運行實況足球這一類的大游戲呢

每當谷歌發布新一代操作系統之後,各家手機廠商升級上一代操作便會提上日程,同時也會有下一代操作系統的消息在互聯網流出,這樣的形式漸漸成為谷歌推廣Android操作系統的一種慣用方式。在Android2.3姜餅即將發布,Android3.0系統蜂巢被曝光,各家手機廠商都正在忙於將自己的Android手機升級至Android2.2操作系統的時候,國外媒體有消息指出Android下一代系統名稱已經確定,爆料者為ARM公司的總裁Tudor Brown,該系列產品代號Ice Cream Sandwich,簡稱ICS,中文直譯過來便是「冰激凌三明治。谷歌方面已經非常明確的告訴大家:Android4.0是各手機與平板電腦系統融合的產品,並沒有最低硬體要求,理論上來講,現有的Android2.2/2.3均可升級Android4.0。在硬體上不設限的同時,谷歌公布Android 4.0系統後,很快就敗皮鏈將SDK公之於眾。Google同時公布了Android 3.0, 4.0源代碼,最新版本為4.0.4。 Nexus機型上系統簡介 最新 Android 系統4.0 命名為 Ice Cream Sandwich(以下簡稱ICS,冰淇淋三明治),對於Google公司旗下最新一代Android Ice Cream Sandwich操作系統,相信很多玩家都已經有所耳聞了,而且恐怕相思之情已經難以慰藉。還好,對於Android Ice Cream Sandwich操作系統,全世界的安卓粉絲心情都同樣急切察孫,這不國外玩家已經在互聯網上曝光了握脊Google Android Ice Cream Sandwich操作系統最新截圖。 國外互聯網上已經曝光了一張Google Android Ice Cream Sandwich操作系統截圖,此圖片是由國外的Android Police網站放出的。據稱此圖是該網站在一台Google Nexus S智能手機上截下來的,其實這張圖片只是一組截圖里的一張而已。從那張圖片上我們可以看到,Google最新版本的Android Ice Cream Sandwich操作系統似乎在UI用戶界面方面有一些改變,除此之外我們從該圖片里也可以看出其他一些新的特色,比如說全新主題的Gmail等。目前Google公司最新版本的Android Ice Cream Sandwich操作系統暫時還沒有正式上市,此前有消息稱Google或打算在10月份期間正式放出Android Ice Cream Sandwich操作系統,這也意味著新版Android將與蘋果iPhone4S的iOS5系統正式火拚。
安卓4操作系統UI設計(29張)在今年5月份舉行的谷歌I/O大會上,谷歌正式對外公布Ice Cream Sandwich的存在後,全世界的安卓用戶和開發者就對這款操作系統備受期待。谷歌稱代號為Ice Cream Sandwich的操作系統最大的特色在於將能統一安卓系統各個版本,改變安卓平板電腦和智能手機分化的現狀,同時根據谷歌的說法,Ice Cream Sandwich將具有以下特色: 統一智能手機和平板電腦系統:谷歌新一代安卓系統Ice Cream Sandwich將只有一個版本,同時支持智能手機、平板電腦,這將解決安卓 3.x系統和安卓 2.x操作系統版本分化的問題,開發者為平板電腦和智能手機開發的應用也將可以通用。
編輯本段系統命名
熟悉Android的朋友都知道谷歌一貫愛以甜品的名稱為Android操作系統命名。Android1.5操作系統被命CupCake,CupCake是國內女生比較喜歡的杯型蛋糕,在蛋糕房或是西式自助里較為常見。Android1.6操作系統名為Donut,也就是電影《變形金剛》胖黑客在審訊時所吃的甜甜圈。而在Android2.0/2.01/2.1則被命名為Eclair的奶油夾心麵包。現在各家手機廠商正在升級的Android2,2操作系統名為Froyo,是一種名為凍酸奶的甜品。而在前不久公布的Android2.3叫做Gingerbread,是一種叫做姜餅的小餅干。而Android3.0操作系統名為HoneyComb,在電影《滿漢全席》電影末段中光頭廚師便是將熊掌放入鍋中,然後配以蜂巢進行烹制。在最新曝光的的Android4.0系統被命名為Ice CreamSandwich,即冰激凌三明治。
編輯本段最新消息
之前媒體普遍預測的是Ice Cream(冰淇淋),Android老大哥安迪魯賓近日在接受采訪時已經證實該名稱,不過有所改動,Android下一代代號為Ice Cream Sandwich(冰淇淋三明治)。據分析稱,Google採用這樣的命名,主要是冰淇淋雕塑造型與凍酸奶會很相似,大家很難區分這兩種甜品,所以索性改了一個外觀不一樣的甜點。 目前還並不清楚冰淇淋三明治的具體版本號、功能等信息,Google下一代手機將與三星一同研發 運行Android 4.處理器採用TI OMAP 4460,Cortex A9結構頻率高達1.5GHz,支持1080p回放。此外,Android 4.0的兼容性將更為強大,除了旗艦機型會預裝外,一些老設備也可通過升級的方式來到最新版本上。 Android 4.0內置的最新版Google+和Google Music兩款應用也已經遭到提取並泄漏,我們已經得到安裝文件進行測試,首先版本號為2.0.0的Google+在國內不能獲取服務連接。版本號為4.0.1的Google Music可以正常使用。 原定計劃10月11日發布Android 4.0系統,因為了表示對蘋果聯合創始人喬布斯的尊重,谷歌將推遲安卓4.0系統的發布 聲明原文如下: 「三星和Google已經決定推遲原先定於10月11日在聖地亞哥CTIA舉行的Mobile Unpacked活動,在當前狀況下,雙方均同意這不是一個公布新產品的時機。我們希望大家理解這次推遲造成的不便,我們將會在適當時候宣布一個新的日期和地點。」 該消息已經得到三星公關總監Kim Titus的正式確認,Google發言人則表示這次推遲主要是因為對喬幫主的離去表示尊重。 北京時間2011年10月19日,三星與Google聯合在香港地區正式發布了首款搭載了Android4.0(內部研發代號Ice Cream Sanwich)的手機GALAXY Nexus。此次發布會同時還展示了最新的Android操作系統,對未來Android系統發展有重要的參考意義,因此頗受業界矚目。 2011年11月8日,HTC官方通過Facebook發布消息稱,將在2012年年初提供首批智能手機的Android 4.0升級服務,而入選HTC首批升級的手機包括:HTC Sensation,HTC Sensation XL,HTC Sensation XE,HTC Rezound(美版),HTC EVO 3D, HTC EVO Design 4G(美版)和HTC Amaze 4G(美版)。 谷歌雲音樂:谷歌雲音樂業務最早出現Android 3.1系統版本上,但當時谷歌雲音樂應用還比較原始,現在,成熟的谷歌雲音樂將隨著Ice Cream Sandwich一起到來。谷歌雲音樂業務將允許平板電腦和智能手機離線保存已經播放過的音樂,並可以離線下載,由於採用了雲存儲技術,這些音樂將可以在用戶的所有Android系統設備中共享。
編輯本段十大特性
1、Android統一版本 電視手機平板融合 Android4.0
Android 4.0將只提供一個版本,同時支持智能手機、平板電腦、電視等設備。至此Android系統設備將迎來統一,Android平板的窘迫現狀將得到有效改善。另一方麵包括三星、索尼在內的家電廠商日益發展的Smart TV也將迎來一次有價值的Android版本升級。 2、 全新設計的UI人性化體驗界面 谷歌在經歷了Android 2.3的版本更新之後,手機系統UI進行了不小的改進,而新的Android 3.1的用戶界面也一改此前Android單調的風格。在經歷了眾多版本的演化之後,谷歌應該對於用戶界面體驗方面有所提升,新的UI設計很有可能會迎來成熟版。 3、回歸原點 保持開源特性 此前Android 3.0曾一度宣布不採取開源措施,然而谷歌深知Android系統一大成功特性就是開源。平板上吃到的苦頭勢必在全新的Android 4.0上避免,用戶為中心的刷機資源一定會讓Android 4.0錦上添花。如果你是一個ROM的定製用戶,那麼你會對這條消息很開心,相信源碼一旦發布,很快就能看到 CyanogenMod 9。 4、同步升級Linux內核 更新3.0以上版本 Android4.0
Android是Google自己研發的手機平台操作系統,該平台基於開源軟體Linux,由操作系統、中間件、用戶界面和應用軟體組成,號稱是首個為移動終端打造的真正開放和完整的移動軟體 4.0的版本號就能告訴我們,這是一個大的升級版本。Linux剛剛發布Linux 3.0內核沒多久,後來又更新到了3.0.1 。 5、音頻、視頻Play Store提供資源下載 谷歌已經試水性質的推出了Google Music Beta ,允許上傳2萬首音樂到Google的雲端伺服器,自動創建播放列表在任何支持flash的設備上回放,我們有理由相信這種在Appstore影響下的數字視頻、音頻服務內容的提供也將會出現在Android上。 6、針對多核處理器優化 隨著越來越多的廠商都在推雙核的智能手機,實際的效果如何我們不予評說,但Android 4.0將特別為使用雙核乃至多核處理器的手機進行專門的優化,充分發揮雙核的性能。 7、運行速度全面提升 雖然官方暫時並沒有提及這個性能具體體現在什麼方面,但是性能上的提升是勢必會有的。 8、集成Google電視和Chrome OS的智能停放 Android4.0
除了在智能電視Google TV中進行融合,全新的Android 4.0也將有望借鑒Chrome OS系統的智能停放功能進行優化,這些功能有望幫助Android 4.0在多項設備終端進行整合。 9、為OEM提供了官方的主題引擎 有了這個引擎,便可通過Google的升級程序更新到這些第三方的主題。必須的,現在外觀同質化這么嚴重,主題與內涵成為了手機的重點因素之一。 10、比擬GameCenter的游戲中心 Google收購和投資如LabPixies、Slide、Jambool、Zynga等公司,這些都將會是Google手機游戲社交網路的技術儲備,而直接競爭對手會是蘋果的Games Center。這些都預示著Android下一個版本將迎來一次整合高質量游戲應用的一個平台。
編輯本段全新的UI
谷歌在經歷了Android 2.3的版本更新之後,手機系統UI進行了不小的改進,而新的Android 3.1的用戶界面也一改此前Android單調的風格。在經歷了眾多版本的演化之後,谷歌應該對於用戶界面體驗方面有所提升,Android 4.0操作系統,Android 4.0將只提供一個版本,同時支持智能手機、平板電腦、電視等設備。
Android4.0全新UI(8張)Android 4.0的操作界面,和蜂巢系統風格類似,然而在很多細節上還是有著很大的不同。進入新系統我們首先看到的是界面的改進。 UI界面主屏幕底部核心導航虛擬按鈕可隱藏,支持文件夾拖放功能和不同應用程序的使用轉換按鈕。而徹底放棄了實體按鍵,採用和Android 3.0(蜂巢)一樣的屏幕虛擬按鍵,增加大量滑動的手勢操作。 Android4.0的用戶界面將有不少改進,經歷多種演變後谷歌應該對於用戶界面體驗方面有所提升,從下面搭載Android操作系統的平板電腦截圖中,可以看出新的UI設計更加成熟。Android 4.0延續了Android 3.X界面的風格,保留了可調節大小的Widget。 此外,Android 4.0還將文件夾功能進行改進,模仿iOS系統把兩個圖標合成一個文件夾,新建文件夾包含拖拽前的這兩個應用,點擊後則打開該文件夾。功能上向蘋果的靠攏。
編輯本段速度提升
人們普遍將安卓平板電腦銷量不佳歸結於操作系統的不給力,認為安卓平板使用體驗距離蘋果iPad有著不小的距離,現在,隨著蘋果iOS 5和安卓Ice Cream Sandwich的發布,新一輪的比拼已經展開。而作為消費者,我們也相當樂於看到兩家巨頭的競爭,因為商家的競爭必將為我們消費者帶來更多價格便宜、使用體驗舒適的產品。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:233
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726