[Powered by Google Translate] [Hội thảo] [ứng dụng Android (Bây giờ với Jelly Beans!)] [Jordan Jozwiak] [Đại học Harvard] [Đây là CS50.] [CS50.TV] Xin chào tất cả mọi người, và chào mừng đến các ứng dụng Android (Bây giờ với Jelly Beans!) Hội thảo. Nó được gọi là Bây giờ với Jelly Beans, tất nhiên, bởi vì phiên bản mới nhất của hệ điều hành được gọi là Jelly Bean. Khi tôi nói về Android năm ngoái và đã cơ bản cùng một buổi hội thảo này Tôi đã trình bày các mẫu thiết kế và lựa chọn phong cách cho Gingerbread, mặc dù Ice Cream Sandwich đã đi ra vào thời điểm đó, và điều này là một cái gì đó chúng ta sẽ nói về việc đi về phía trước một chút. Android, tất nhiên, có một số vấn đề với sự phân mảnh, vì vậy hệ điều hành mới nhất của Google thường không thực sự sẽ trở nên phổ biến giữa các người dùng với khả năng lên đến một năm, không may. Nhưng bất chấp điều đó, chúng ta sẽ nói về rất nhiều lý do tại sao Android là tốt hơn nhiều so với iOS. Được rồi, chúng ta sẽ nói về Android so với iOS, một số mô hình thiết kế, làm thế nào bạn sẽ có được thiết lập chỉ trong một slide, và sự khác biệt lớn giữa điều này và năm cuối cùng là tôi chỉ muốn zoom thông qua một số điều về khái niệm làm việc với hệ điều hành và sau đó đi vào một ví dụ thực sự cơ bản. Trong thực tế, chỉ là ví dụ của Google mô tả để xây dựng ứng dụng đầu tiên của bạn, và chúng tôi sẽ đi qua nó với nhau và chỉ cần mô tả. Tôi biết nhiều bạn đã chỉ được viết bằng C, vì vậy Java đã được sẽ được một quan điểm khác nhau, và cách này bạn sẽ có được bàn chân ướt và cảm thấy một chút thoải mái hơn với nó hy vọng. Một bản tóm tắt nhanh chóng, Android so với iOS. Trong Android có phí này phát triển một lần là $ 25, không ai trong số này điều $ 100 mỗi năm. Không có giới hạn, có nghĩa là nếu tôi muốn gửi một ứng dụng, Tôi chỉ trình, và không có quá trình phê duyệt như có cho iOS. Bạn có thể phát triển với Java sử dụng Eclipse, đó là nền tảng, do đó, nó không quan trọng nếu bạn có một máy Mac, Cửa sổ, hoặc một số máy Linux. Tất nhiên, với iOS bạn phải sử dụng XCode trên máy Mac, và Android được sử dụng bởi nhiều người, vì vậy nếu bạn muốn ứng dụng của bạn để có một số loại khả năng hiển thị hoặc có thể làm cho một ít tiền từ quảng cáo có lẽ bạn đang có nhiều khả năng được hưởng lợi từ Android. Và một điều đó là luôn luôn được biết về Android là số tiền cực kỳ tuỳ biến, trong khi iOS đang rất cố định trong cách thức của họ để họ có thể duy trì an ninh và kiểm soát mọi khía cạnh ít của thiết kế trong hệ điều hành của họ và các ứng dụng cá nhân. Android là hình thức rất tự do, và có rất nhiều khả năng. Được rồi, một số mô hình thiết kế. Nhận thấy đây giống như iOS có máy tính bảng và iPhone và iPod Touch họ phải hỗ trợ, nói rằng, như một chục các thiết bị nếu bạn muốn hỗ trợ điều lịch sử là tốt. Với Android, bạn phải hỗ trợ hàng trăm thiết bị, do đó, có một số điều mà Google đã cố gắng thực hiện làm cho người dùng trải nghiệm một chút phù hợp hơn, nhưng chúng tôi cũng sẽ nói về cách này có nghĩa là có những vấn đề của sự phân mảnh mà bạn liên tục phải nhận thức được hỗ trợ. Phân mảnh có nghĩa là có nhiều hệ điều hành khác nhau, nhiều điện thoại khác nhau với các phần cứng khác nhau chạy Android tất cả cùng một lúc, để biểu đồ này ở đây đi lại trong khoảng 6 tháng. Yeah, 6 tháng, và bạn có thể thấy ban nhạc đen tối nhất ở phía dưới là Jelly Bean, ra đời trong mùa hè, và bạn có thể nhìn thấy ngay bây giờ có lẽ là khoảng 2% trong những điện thoại có nó. Ice Cream Sandwich xuất hiện hơn một năm trước, và một phần tư trong những điện thoại có nó. Hiện vẫn còn rất nhiều điện thoại đang sử dụng phiên bản hệ điều hành từ năm trước. Một điều mà Google đã cố gắng làm để làm cho trải nghiệm người dùng rất nhiều phù hợp hơn trên các ứng dụng được bắt đầu với Honeycomb, đó là phiên bản máy tính bảng, sau đó Ice Cream Sandwich và Jelly Bean, họ đang thực sự cố gắng nhấn mạnh sử dụng thanh hành động này, đó là những gì bạn có thể nhìn thấy ở phía trên đây, tất cả mọi thứ ở đây, bao gồm cả nút này ít cài đặt. Đó là sự lựa chọn thiết kế. Bây giờ, bất cứ khi nào bạn nhìn thấy 3 chấm nó có nghĩa là click vào đó, và sẽ có một trình đơn thả xuống, trong đó có một số loại thiết lập. Điều này chỉ xuất hiện bởi vì tôi nhấp vào nút này. Đây là điều mà họ đang cố gắng sử dụng để làm cho các ứng dụng nhiều hơn một chút phù hợp trên bảng và do đó người sử dụng có một cảm giác tốt hơn về kinh nghiệm thống nhất. Được rồi, vì vậy trong trường hợp bạn không làm điều này đã hoặc nếu bạn đang xem ở nhà sau đó bạn có thể làm theo các bước sau để thiết lập môi trường mã hóa của bạn. Nó sẽ liên quan đến cách vào trang web đây. Bạn có thể Google cài đặt Android SDK và theo một số mô tả đó. Họ cho bạn biết tất cả mọi thứ. Họ có bạn cài đặt SDK, tải về phiên bản Eclipse Classic, mặc dù, tất nhiên, chúng tôi đang mã hóa trong Java. Họ đề nghị này, và sau đó ADT này, các công cụ phát triển Android, là một plugin mà bạn cài đặt vào Eclipse cho phép bạn có nhiều kinh nghiệm sắp xếp hợp lý hơn với Android trong Eclipse. Nó sẽ cung cấp cho bạn một số giao diện người dùng đồ họa thiết kế các quan điểm, và nó sẽ cung cấp cho bạn hỗ trợ nhiều hơn nữa và khả năng khởi động với trình giả lập và tất cả những gì đại loại như vậy. Khung ứng dụng. Tôi muốn nói về các dự án trong Android được cấu trúc như thế nào, và sau đó chúng ta sẽ đi vào một ví dụ nhanh chóng, và hy vọng bạn có thể đặt câu hỏi tại bất kỳ điểm nào và cảm thấy thoải mái bằng cách kết thúc của nó. Chúng tôi có một số thuật ngữ đầu tiên. Một hoạt động như màn hình bạn nhìn thấy khi bạn khởi động một ứng dụng. Toàn bộ kinh nghiệm là hoạt động riêng của mình, do đó, bạn có thể nghĩ về nó như một màn hình hoặc một cái nhìn, nhưng nó thực sự là bên mã nguồn của nó. Chúng tôi vẫn gọi là phần giao diện thực tế của nó một cái nhìn. Đó là loại như thế nào trong pset 7 chúng tôi đã có điều khiển và sau đó xem. Hoạt động là nhiều hơn hoặc ít hơn các bộ điều khiển, và xem là những gì chúng tôi đang làm trong điều khoản của XML được kết hợp với hoạt động đó. Những mảnh vỡ là cái gì đó là thực hiện trong Ice Cream Sandwich trong tương lai. Nó chỉ là một ý tưởng lấy các bộ phận của xem hoặc hoạt động và phân chia chúng thành các khu vực riêng biệt để chúng ta có thể làm cho mã của chúng tôi có thể sử dụng nhiều hơn cho các thiết bị khác nhau rằng chúng ta phải hỗ trợ, và nó chỉ là một cách để cố gắng còn yếu tố ra mã hơn. Dịch vụ là những điều nền như chơi nhạc hoặc hướng dẫn điều hướng có khả năng. Cung cấp nội dung, đây là những API trong hệ điều hành cho phép bạn truy cập dữ liệu được chia sẻ như thông tin liên lạc, và sau đó là một ý định là một cái gì đó chúng tôi sẽ sử dụng khi chúng ta muốn khởi động một hoạt động mới từ hoạt động hiện tại của chúng tôi. Xin chào Android, điều này là có được một dự án mà chúng tôi sẽ nói về. Tôi thực sự sẽ làm điều đó cho bạn, và sau đó chúng tôi sẽ làm một điều mà chúng ta bấm vào một nút với một số văn bản và khởi động một hoạt động mới. Rất đơn giản, nhưng tôi muốn đi qua những gì sẽ đi vào một dự án như thế này. Khi bạn thực hiện các dự án mới, bạn sẽ thấy bên trong Eclipse có dự án này được gọi là Hello Android. Sau đó có một bó toàn bộ các thư mục ở đây. Những người mà bạn đang thực sự quan tâm tới là thư mục nguồn, thư mục tài nguyên, độ phân giải, và ở một mức độ thư mục thư viên cho các thư viện. Và chỉ cần như vậy chúng ta đang ở trên cùng một trang với nếu bạn đã tạo ra một dự án mới, bạn có thể làm điều này ngay ở đây, vì vậy nếu tôi muốn gọi nó HelloAndroid, và sau đó nó tự động làm một bó toàn bộ các thông tin cho chúng tôi. Tên gói được coi là một định danh duy nhất mà thông thường sẽ được liên kết với các trang web, nếu bạn đã có một. Ví dụ, tôi sẽ gọi net.cs50.helloandroid này. Và tôi đã đã thực hiện dự án này một lần. Được rồi, xin lỗi. Chúng ta hãy gọi nó HelloCS50. Và sau đó nó sẽ hỏi những câu như những gì sắp xếp biểu tượng sao chúng ta muốn thực hiện. Điều này là tất cả vì giao diện Android Developer Tools, các plugin mà chúng ta thêm vào Eclipse, vì vậy chúng tôi có thể chọn những thứ như những gì biểu tượng chúng ta muốn, và đó sẽ đi vào chiều sâu, nếu chúng ta muốn. Nhưng cuối cùng, chỉ cần thực hiện dự án, và tất cả mọi thứ xuất hiện ở đây. Như tôi thấy trên màn hình khác, chúng tôi có các thư mục nguồn, và tôi sẽ nói về những gì tất cả điều này có nghĩa là ngay sau đó, nhưng bạn có thể thấy ngay lập tức nó đưa chúng ta đến màn hình HelloCS50. Có một số nút trên đây để thêm văn bản và văn bản lĩnh vực bố trí. Đó là loại giống như XCode nhưng tiếc là không phải là khá hợp lý. Nhưng các đoạn phim sẽ được người bạn và ADT của bạn đặc biệt để làm điều này. Được rồi, thư mục nguồn là nơi các tập tin Java được tổ chức, và điều này thực sự là sự ra mắt của chương trình của bạn. Đó là cơ bản giống như các bộ điều khiển. Các thư mục tài nguyên hoặc độ phân giải là nơi chúng ta sẽ tiếp tục bố trí màn hình, hình ảnh, âm thanh, văn bản, hình ảnh động và mọi thứ khác, thư viên, rõ ràng, thư viện. Và Manifest, đó là cách mà hệ thống Android biết làm thế nào để tương tác với các ứng dụng của bạn. Nó cho nó về quyền và những hoạt động thực sự sẽ được chạy. Đó là tất cả các thông tin cần thiết đó là cần thiết để chạy ứng dụng của bạn. Thư mục nguồn là-nếu chúng ta mở rộng nó như bạn có thể nhìn thấy bây giờ. Và một ví dụ mà một mã sẽ xem xét, đây là mã mặc định. Như chúng tôi gọi nó, MainActivity. Theo mặc định, chúng tôi nhận onCreate, mà là một chức năng được gọi là khi tải hoạt động này, vì vậy bạn muốn gọi onCreate (savedInstanceState). Điều này sẽ khôi phục lại bất kỳ bit thông tin trong trường hợp các ứng dụng đã bị tạm dừng. Có một hoạt động chu kỳ cuộc sống toàn bộ biểu đồ mà bạn có thể nhìn vào khi bạn nhận được nhiều hơn một chút chiều sâu trong nó, nhưng dòng quan trọng nhất của mã có chức năng setContentView này mà sẽ được tải các tập tin tài nguyên cho bố trí. Sau đó, những gì onCreate đây là cơ bản làm là nó nói khi tôi tạo ra hoạt động này tôi muốn tải bố trí này. Và chúng tôi sẽ nói về những gì bố trí đó là trong một giây. Nếu chúng ta khởi động mà ở đây nó trông giống hệt như thế này, và theo mặc định bởi vì chúng tôi đã làm điều này và Eclipse ADT làm việc đó cho chúng tôi đây là tất cả các mã nồng nhiệt khi được tạo ra cho chúng ta, và chúng ta có thể di chuyển và thay đổi mọi thứ như chúng ta muốn. Các thư mục tài nguyên, như tôi đã nói, đây là nơi mà chúng tôi tổ chức tất cả các bố trí, drawables về bất kỳ loại hình ảnh- chúng được gọi là drawables và sau đó các tập tin âm thanh, các trình đơn. Đó là một cách của một bó toàn bộ XML trong một thời trang được sắp xếp tốt đẹp. Như bạn có thể thấy, có. Hdpi, ldpi, mdpi và thư mục xhdpi cho drawables. Đây là mật độ màn hình khác nhau, mật độ điểm ảnh rất cao trên mỗi inch, mật độ thấp, mật độ trung bình, thêm mật độ cao. Đây là, một lần nữa, vì vậy chúng tôi có thể hỗ trợ tất cả các thiết bị khác nhau, và lý tưởng, bạn sẽ có những hình ảnh khác nhau cho mỗi độ phân giải khác nhau. Bố trí này là nơi chúng tôi bao gồm tất cả các bố trí khác nhau sẽ được sử dụng trong các hoạt động khác nhau. Họ cũng có thể bao gồm bố trí cho mảnh vỡ, có nghĩa là hoạt động một phần cơ bản. Nếu bạn muốn làm một cái gì đó mát mẻ như bất cứ khi nào bạn xoay điện thoại bạn muốn nó có một bố trí khác nhau mà bạn có thể làm được bố trí cảnh quan như một thư mục khác nhau, và Android sẽ tự động có một bó toàn bộ các quy tắc trong các thư mục tài nguyên, vì vậy nó sẽ biết nhìn vào các thư mục khác nhau dựa trên các thiết lập hiện tại của điện thoại, những gì sắp xếp của phần cứng mà bạn đang sử dụng. Tương tự như vậy, điều này có giá trị-v11 đây và giá trị-v14 và các giá trị mặc định của thư mục này là cho- tốt, giá trị của chính nó, đây sẽ là giá trị mặc định trên tất cả các phiên bản của hệ điều hành. Mặt khác, v11 và v14 tương ứng với Honeycomb và Ice Cream Sandwich, tương ứng. Một lần nữa, đây là những cách mà-trong các thư mục này là những chuỗi khác nhau và phong cách, vì vậy bạn có thể tùy chỉnh sự xuất hiện của ứng dụng của bạn hoặc có khả năng thậm chí chức năng của nó, mặc dù đó có lẽ sẽ là một ý tưởng tồi, dựa trên phiên bản của hệ điều hành. Và tôi đã nói chuyện về tất cả điều này ở đây. Một lần nữa, thể vẽ được, liệu, bố trí, giá trị. Giá trị mặc định, nếu chúng ta đi vào Hello Android hoặc Xin chào CS50 ngay bây giờ nó sẽ trông giống như thế này. Nó sẽ chào thế giới. Như bạn có thể thấy ngay đây với các văn bản Android các văn bản cho xem văn bản này, đó là cơ bản chỉ là một nhãn hiệu, là những gì chúng tôi sẽ gọi nó trong iOS. Nó có ký hiệu này funny @ chuỗi / hello_world. Điều này là vì vậy chúng tôi có thể-chúng tôi cố gắng để trích xuất tất cả các dây, tất cả các chuỗi mã hóa cứng trong Android vào một thư mục riêng biệt, mà sẽ xảy ra là trong values.strings. Nếu chúng ta nhìn ở đây, chúng ta có thể thấy rằng chúng tôi có một chuỗi mã hóa cứng lưu tại đây cho hello thế giới, và nó được gọi là hello thế giới, và đây là loại một quyết định thiết kế chung trên nhiều nền tảng mà bạn muốn- dây là các loại điều mà chúng tôi muốn có khả năng có thể thay đổi. Chúng tôi không muốn để kiểm soát F trong tập tin mã nguồn của chúng tôi trong XML của chúng tôi. Chúng tôi muốn để có thể thay đổi điều này bất cứ khi nào chúng tôi có cơ hội. Này tập tin XML, strings.xml, là một cách để giải nén chuỗi mã hóa cứng mà nếu không sẽ được bố trí trong nguồn tài nguyên của chúng tôi hoặc trong mã nguồn của chúng tôi. Manifest là nơi mà chúng tôi tiếp tục thông tin cần thiết này về ứng dụng. Nó bao gồm các tên gói. Đó có phải là một định danh duy nhất. Không giống như App Store cho iOS tên của các ứng dụng không phải là duy nhất, và bạn có thể trong thực tế thay đổi tên của ứng dụng của bạn sau khi bạn gửi nó, vì vậy nếu tôi bắt đầu với Angry Birds, và sau đó tôi làm cho một bản cập nhật, và tôi không muốn phát hành một phiên bản mới Tôi đoán tôi có thể gọi nó là Angry Birds 2 trong khi tôi đang trên chu kỳ phát hành cùng. Nó sẽ chỉ hiển thị như là một bản cập nhật. Điều duy nhất mà phải được duy nhất là tên gói này, mà không nhiều người sẽ thấy. Vâng, bạn chỉ muốn xem nếu bạn đang tìm kiếm vào mã nguồn hoặc nếu có một số loại lỗi. Các thành phần bao gồm các hoạt động, vì vậy chúng tôi phải khai báo bất kì hoạt động chúng tôi sử dụng. Đây là một loại phép của điều. Vì Android không có quá trình này áp dụng nghiêm ngặt cho trình ứng dụng thay vào đó họ chỉ cần tất cả mọi thứ dựa tắt của quyền và tuyên bố những điều trong Manifest. Phiên bản SDK cũng rất quan trọng. Chúng tôi có thể thiết lập sử dụng như phiên bản SDK tối thiểu một cái gì đó. Rõ ràng, bạn muốn tạo mã và thiết kế cho các hệ điều hành mới hơn. Có lẽ không phải là mới nhất, có thể không Jelly Bean. Có lẽ bạn muốn thiết kế chủ yếu cho Ice Cream Sandwich, mặc dù chúng khá giống nhau về quyết định thiết kế và các thư viện và các API thực tế. Nhưng thay vì có những người của Android phiên bản gốc giống như bánh rán cách trở lại khi- người vẫn còn xảy ra để được sử dụng mà cố gắng để tải về ứng dụng của bạn và sau đó nói nó không hoạt động trên điện thoại của tôi, bạn có thể thiết lập các phiên bản tối thiểu và nó có thể là Gingerbread hoặc Ice Cream Sandwich hoặc bất cứ điều gì bạn cảm thấy thoải mái cáo nếu. Và đây là một ví dụ về Manifest. Chúng ta có thể nhìn vào một thực tế một chút. Được rồi, chúng ta sẽ đi về phía trước với các bản demo tại. Đây là bản demo nếu bạn Google Android xây dựng ứng dụng đầu tiên của bạn hoặc một cái gì đó như thế. Chúng tôi sẽ đi qua tất cả những gì xảy ra ở đó, và xin lỗi, chỉ cần cho một tài liệu tham khảo những người ở đây đều biết Java đến mức độ nào? Được rồi, vì vậy Java là ngôn ngữ lập trình mới cho hầu hết mọi người ra khỏi CS50. Một thời gian ngắn, để đi qua một lần nữa những gì nó nói ở đây, những gì chúng tôi muốn làm là thay vì điều chỉnh ứng dụng này trên thế giới chào rằng tất cả nó là nó sẽ khởi động và nó nói hello thế giới và nó nói xin chào CS50 ở phía trên bởi vì đó là tên hoạt động chúng tôi sẽ cố gắng để làm cho một lĩnh vực văn bản và một nút do đó khi chúng ta bấm nút này, nó sẽ có văn bản từ các lĩnh vực văn bản và khởi động một hoạt động mới, và nó sẽ nói bất cứ văn bản mà nói trong các hoạt động, và điều này là tương đối đơn giản. Nó không phải là rất thú vị. Bạn sẽ không muốn phát hành bất kỳ ứng dụng như thế này. Nhưng nó thể hiện một số điều quan trọng thiết kế. Chúng tôi sẽ phải tương tác với Manifest, với các tập tin bố trí, với mã nguồn, và bạn có thể xem như thế nào để khởi động một hoạt động từ khác. Chúng tôi sẽ bắt đầu với việc bố trí cho hoạt động đầu tiên của chúng tôi, mà tôi biết đó là loại nhỏ, nhưng như bạn có thể nhìn thấy ngay bây giờ, tất cả đó là là nó có logo của chúng tôi mà chúng tôi tạo ra, tên hoạt động, và nó nói hello thế giới trong trung tâm. Thay vào đó, tôi đầu tiên sẽ thực hiện điều này vào một bố trí tuyến tính, bố trí tương đối, và đây là tất cả mọi thứ bạn có thể tìm và có giá trị đi qua tại một số điểm về bố trí. Đó là rất nhiều như HTML. Chúng tôi nói nó không phải là giá trị thực sự biết về một ý nghĩa chương trình, nhưng có rất nhiều bố trí khác nhau, bạn có thể kiểm soát, và nó chỉ giống như CSS về phong cách. Có rất nhiều xảy ra chỉ về thẩm mỹ ở đây, và yeah, nó có giá trị học tập, nhưng đó là loại điều bạn nên tìm kiếm như bạn đi và bạn cảm thấy như bạn cần một cái gì đó mới. Tôi có thể tận dụng một số công cụ ADT đây ít nhất để bắt đầu với. Tôi sẽ làm cho một trường văn bản, và tôi sẽ làm cho một nút. Đặt chúng ngay bên cạnh nhau. Họ đã thay đổi kích thước cho phù hợp. Xin lỗi, một lần nữa, trở lại với sự khác biệt giữa bố trí tuyến tính và bố trí tương đối, bố trí tuyến tính cho nhiều chức năng hơn một chút về làm đầy không gian và đảm bảo chúng tôi vị trí thứ theo chiều ngang hoặc theo chiều dọc. Sự khác biệt lớn giữa một bố trí tuyến tính và bố trí tương đối là các vị trí bố trí tương đối tất cả mọi thứ liên quan đến quan điểm khác, và những điều tốt về nó là nó tốn ít thời gian để vẽ vì hệ điều hành xem xét tất cả các mã và nói rằng điều này đi quan đến điều này ở đây, ở đây. Nó có nghĩa là nó làm cho các phép đo ít hơn một bó toàn bộ bố trí tuyến tính lồng nhau, mà tôi sẽ phải làm gì nếu tôi muốn mọi thứ đi theo chiều dọc ở đây. Tôi đã có một số điều đang xảy ra theo chiều ngang, vì vậy tôi cần một bố trí tuyến tính khác nhau để lồng ghép theo chiều dọc, nhưng nếu tôi đã làm một bố trí tương đối tôi có thể nói giữ này sang bên trái, điều này ở bên phải và những điều dưới đây. Nhưng vì tôi muốn họ điền vào ngay bây giờ tôi sẽ sử dụng một bố trí tuyến tính, và bạn có thể thấy nó đã làm rất nhiều những việc này cho chúng tôi. Tất cả các quan cần phải có một tài sản của chiều rộng và chiều cao, và điều này xảy ra để có một trọng lượng của 1, và điều này có trọng lượng trên 1 để nó lấp đầy toàn bộ không gian. Nhưng chiều rộng và chiều cao là quan trọng nhất. ID lĩnh vực này ở đây là không quan trọng trong bố trí thực tế trừ khi chúng tôi đang sử dụng một bố trí tương đối và nói rằng chúng tôi có thể tham khảo một vị trí xem trong tài liệu tham khảo khác. Nếu chúng tôi đã có một bố cục tương đối, chúng tôi có thể nói vị trí này bên dưới này hoặc cao hơn ID này, nhưng ID này sẽ rất quan trọng khi chúng ta đang sử dụng nó trong mã của chúng tôi bởi vì chúng tôi có thể tham khảo những quan điểm cá nhân theo cách này. Và sau đó bạn sẽ nhìn thấy requestFocus thẻ, đó là một cái gì đó bạn có thể thấy trong pset 7. Có một thẻ tự động tập trung hoặc một cái gì đó dọc theo các dòng với một trong các lĩnh vực. Và một điều, tất nhiên, chúng ta có thể làm giống như trong HTML, và thông báo một trong những điều tốt đẹp về ADT là nó autocompletes đây. Có lẽ không phải là độc đáo như nó đã làm trong XCode, nhưng nó dù sao, và chúng ta có thể nói gợi ý và sau đó cung cấp cho nó một số loại chuỗi thích viết một tin nhắn, và nếu tôi cung cấp cho nó một thời điểm, cũng nhận thấy rằng tôi nhận được một lỗi nhỏ ở đây nói rằng chúng ta nên sử dụng một nguồn tài nguyên chuỗi cho điều này, vì vậy nếu tôi để cho nó làm một số công việc khó khăn đối với tôi Tôi có thể chọn chuỗi này, làm khúc xạ Android và trích xuất các chuỗi Android. Tôi có thể cung cấp cho nó cái tên đó, viết một tin nhắn, và những gì nó đã bây giờ là nó thay thế là chuỗi mã hóa cứng với một tham chiếu đến chuỗi trong tập tin xml của chuỗi., có nghĩa là bây giờ điều này là ở đây. Và tôi biết rằng dường như một chút tầm thường và như làm thêm vào thời điểm này, nhưng khi bạn có một bó toàn bộ của sự vật, một bó toàn bộ chuỗi, đó là thực sự quan trọng, và đặc biệt đối với nội địa hóa bởi vì như tôi đã đề cập trước đó, Android là một hệ điều hành được sử dụng rất toàn cầu mà bạn chỉ có thể làm giá trị-en hoặc giá trị-sp hoặc một cái gì đó cho tiếng Anh hoặc tiếng Tây Ban Nha hoặc các ngôn ngữ khác. Và sau đó có thể bạn không có kinh nghiệm này chưa vì chúng tôi không làm được gì nhiều JavaScript về lập trình web, nhưng chúng ta cũng có thể làm lĩnh vực này được gọi là onclick cho nút, và đây là một cách để tham khảo trong cách bố trí của chúng tôi mà chúng ta muốn có một chức năng nhất định được gọi là trong mã nguồn của chúng tôi. Tôi sẽ gọi SendMessage này, và để làm công việc này có nghĩa là trong các hoạt động chính ở đây Tôi sẽ phải tạo ra một chức năng mà là công khai để nó có thể được truy cập bằng cách bố trí. Đó là khoảng trống bởi vì bạn chỉ không muốn nó trở lại bất cứ điều gì. Chúng tôi sẽ gọi nó là SendMessage, và nó có một cái nhìn, mà là một loại bối cảnh chúng ta có thể neo đậu phương pháp này cho rằng quan điểm cá nhân khi chúng tôi đang chạy nó. Và tôi không biết nếu bạn nhận thấy-tốt, bạn sẽ không nhận thấy, nhưng vào thời điểm này đây xem đây là một loại mà chưa được bao gồm, và dĩ nhiên, bạn đã biết từ CS50 về không bao gồm các loại. Những điều tốt đẹp về như Eclipse IDE là nếu bạn quên bao gồm một loại nó sẽ nhấn mạnh với một màu đỏ nhỏ nguệch ngoạc và sau đó cung cấp cho bạn các tùy chọn để nhập điểm. Một cách nhanh chóng để làm điều đó là kiểm soát sự thay đổi O, và nó sẽ nhập khẩu tất cả các tập tin mà nó cần. Bây giờ chúng ta có chức năng này SendMessage, đó là sẽ gửi tin nhắn từ MainActivity đến một hoạt động mới, chúng ta sẽ phải sử dụng một ý định để khởi động các hoạt động mới từ này, vì vậy chúng tôi có thể sẽ muốn tạo ra một hằng số toàn cầu cũng đặc biệt hoặc một hằng số công cộng sẽ giúp chúng tôi biết làm thế nào chúng ta sẽ tham khảo chuỗi bởi vì khi chúng ta tạo ra một ý định chúng ta không chỉ gọi một hoạt động mới, nhưng chúng tôi cũng có thể cung cấp cho nó một gói thông tin. Một bó thực sự là một thuật ngữ sử dụng Android, và đó là một cách nói cho nó dữ liệu thêm, mà nó không thể là một kiểu dữ liệu rất phức tạp, nhưng chúng tôi chắc chắn có thể bao gồm các phép toán luận hoặc các chuỗi hoặc số nguyên. Đại loại như vậy. Hãy hỏi về bất kỳ của các vòng loại ở đây, công cộng, cuối cùng, tĩnh. Công cộng là một trong những quan trọng. Nó có nghĩa là chúng ta có thể truy cập vào biến này từ các tập tin mã nguồn khác chẳng hạn như khi chúng ta tạo ra một hoạt động mới. Chúng ta có thể tham khảo các chuỗi trong tập tin này. Nếu đó là tư nhân, nó có nghĩa là nó giới hạn tập tin cá nhân này ở đây. Nhưng chúng ta sẽ gọi một cái gì đó như tin nhắn thêm. Bây giờ chúng ta đã thực hiện chức năng này, và nếu chúng ta nhấn nút, chức năng này sẽ được gọi. Nhưng chúng tôi đã không thực hiện bất cứ điều gì, rõ ràng, với các chức năng. Những gì chúng tôi muốn làm bây giờ là tạo ra một hoạt động mới, các hoạt động thực sự sẽ được đưa ra. Trong Eclipse, chúng tôi có thể nói, hoạt động Android mới, hoạt động trống. Chúng tôi có thể cung cấp cho nó một cái tên. Hãy gọi nó là kết quả hoạt động của chúng tôi. Và sau đó lĩnh vực này có thứ bậc cha mẹ là một cách để xác định cách các hoạt động có liên quan đến nhau. Bởi vì điều này sẽ được đưa ra từ các hoạt động khác chúng ta nên xác định rằng nó có hoạt động chính của phụ huynh. Và tôi có thể đã nhấp vào trường bên cạnh đó, mà sẽ nói với chúng tôi một số lĩnh vực tùy chọn mà nó cũng được bao gồm, nhưng những điều tốt đẹp về ADT, một lần nữa, là nếu tôi di chuyển xuống đây trong Manifest nhớ rằng tất cả điều này thực sự đã được bao gồm theo mặc định khi chúng ta ban đầu được tạo ra dự án, và bây giờ bởi vì chúng tôi sử dụng này tạo ra một hoạt động mới thay vì chỉ thêm tập tin lớp học của riêng của chúng tôi bởi vì chúng tôi đã đi qua giao diện đồ họa của họ để làm điều này nó đã được thêm vào tất cả điều này với Manifest cho chúng ta, mà chỉ có nghĩa là bây giờ hệ điều hành sẽ không phàn nàn khi chúng tôi cố gắng để khởi động hoạt động này. Và nó cũng có, tất nhiên, đã cho nó một nhãn, cũng xuất hiện trong chuỗi. Nó rất nhiều thứ trở lại vào cuối cho chúng ta. Dù sao, bây giờ chúng ta đã có kết quả hoạt động này là tốt, các tập tin mã nguồn thực tế trong thư mục nguồn, và bạn có thể thấy, để một thời gian ngắn liên lạc trên này- bởi vì chúng tôi đã nói với nó về mẹ thứ bậc này nó đã cho android.r.ide.home lĩnh vực này trong onOption này điều được lựa chọn. Điều này về cơ bản là nói là có một nút trình đơn tại mà ở góc trên bên trái của màn hình nếu tôi quay trở lại với PowerPoint mà chúng tôi đầu tiên nói về thanh hành động vì phụ huynh phân cấp bây giờ có một mũi tên nhỏ trở lại đây và điều này là có thể click vì vậy chúng tôi sẽ có thể đến sau khi chúng ta thực sự chạy ứng dụng này- quay trở lại, và đó là một cách để tiết kiệm cho chúng tôi một ít mã có. Bây giờ trong này-tốt, nó có vẻ là phàn nàn về điều đó trong một thời điểm. Chúng ta hãy nhận xét rằng ra. Bây giờ, để thực sự tương tác với những hoạt động 2, chúng ta phải tạo ra một mục đích trong đó bao gồm tất cả các dữ liệu này. Trong SendMessage bây giờ tôi sẽ đi tuần xuyên qua một số bit của mã và giải thích rằng như tôi đi. Một ý định, như tôi đã nói, là một cách để khởi động một hoạt động từ khác. Mục đích là loại. Chúng tôi đang tạo ra một myIntent biến. Và điều này thực sự là một đối tượng, đó là lý do tại sao chúng tôi phải gọi mới. Đó là việc sử dụng Java chung đó, mà có thể mất một chút nhận được sử dụng để. Điều này có nghĩa chúng ta đang sử dụng các hoạt động hoặc các MainActivity lớp, và ý định theo cách đó có hoạt động nó sẽ từ và hoạt động của nó sẽ, mà chúng ta gọi ResultActivity, và đó là lớp học riêng của mình. Bao gồm đó. Và sau đó như tôi đã đề cập trước đây, chúng tôi đã cho ID đó vào trường văn bản sửa và xem văn bản, do đó để lập trình chụp các văn bản tồn tại trong editText chúng tôi sử dụng chức năng này được gọi là findViewByID, đó là tương tự như một cái gì đó mà bạn sẽ sử dụng khi cố gắng để có được các lĩnh vực từ DOM. Có lẽ David nói về điều này trong bài giảng. Nhưng nó chỉ là một cách để nhận được những-đó là lý do tại sao chúng ta tag những điều này với các lĩnh vực này. Id.editText1. Nó đã autocompleting cho tôi ở đó. Và sau đó chúng tôi cũng sẽ bao gồm-này editText bây giờ mà chúng tôi có sân trong chương trình của chúng tôi, tất cả những gì đã làm được findViewByID cơ bản bạn có thể nghĩ về nó như cung cấp cho chúng tôi một tham chiếu đến editText đó. Bây giờ chúng tôi muốn để có được chuỗi hoặc tin nhắn trong đó editText mà chúng tôi có thể làm bằng cách sử dụng- bạn có thể nghĩ editText như một cấu trúc- chúng tôi gọi nó là một đối tượng trong Java với một bó toàn bộ các phương pháp khác nhau hoặc các lĩnh vực và các thuộc tính gắn liền với nó. Khi tôi nói editText. nó mang lại cho tôi cơ hội để truy cập một phương pháp như gettext, mà sẽ nhận được các văn bản hiện hành trong editText đó và sau đó chuyển đổi đó một cách rõ ràng cho một chuỗi, và chúng tôi đã lưu tin nhắn. Bây giờ chúng ta thực sự muốn làm điều gì đó với mục đích chúng tôi tạo ra chỉ trong khoảnh khắc trước. Tôi sẽ đặt thêm như nó được gọi là trong ý định, trong đó, một lần nữa, như tôi đã nói, đây là một cách để tạo ra các gói với một bó toàn bộ dữ liệu. Nhắn thêm là từ khóa của chúng tôi vì vậy chúng tôi biết những gì chúng ta đang tiết kiệm này theo, và sau đó tôi là bao gồm cả tin nhắn. Và sau đó chúng tôi thực sự có thể bắt đầu hoạt động bằng cách thêm vào myIntent tham số. Và điều này thực sự sẽ khởi động các hoạt động, vì vậy bây giờ kể từ khi tôi nâng cấp lên Windows 8 có thể có một số lỗi mà hiển thị một thời gian ngắn, nhưng cố gắng để bỏ qua chúng. Và điều này là giả lập Android. Hy vọng rằng các mã thực sự sẽ xuất hiện trong một thời điểm. Một lần nữa, bỏ qua tất cả những điều nhỏ nhặt. Nhưng giả lập Android, bạn có thể cạnh tranh với bất kỳ phiên bản của hệ điều hành từ những người sớm nhất, Donut, Gingerbread. Đây là Jelly Bean 4.1. Nhưng như bạn có thể nhìn thấy ngay bây giờ, đây là một cái gì đó chúng tôi thực hiện. Điều này có MainActivity, các editText, nút. Tôi có thể gõ một cái gì đó ở đây, nhưng những gì chúng tôi còn thiếu vào thời điểm này? Chúng tôi đã làm sân trong MainActivity đó sẽ gửi tin nhắn để các hoạt động khác, nhưng vào thời điểm này chúng tôi đã không thực hiện bất cứ điều gì trong các hoạt động khác, vì vậy nó sẽ không nhận được bất cứ điều gì. Hãy kết thúc phần đó trước khi chúng tôi di chuyển trên. Kết quả hoạt động này, những gì chúng ta cần làm là chúng ta cần làm là chúng ta sẽ cần đến chúng tôi cũng có thể tham khảo mục đích trong hoạt động này, vì vậy chúng tôi có thể nắm bắt ý định, mà thực sự là đơn giản. Đó là một chức năng bao gồm trong lớp hoạt động, vì vậy chúng tôi chỉ có thể nói "Nhận được tin nhắn từ mục đích." "Ý định myIntent = getIntent." Và điều này sẽ cho chúng ta-bây giờ myIntent là một đối tượng, đó là một tham chiếu đến mục đích mà dẫn chúng tôi đến hoạt động này. MainActivity cuộc gọi và cung cấp thông tin thêm dẫn đến hoạt động. Hoạt động kết quả bây giờ nhìn vào mục đích mà dẫn nó ở đây, và chúng ta có thể truy cập thư mà chúng tôi tạo ra trong một khác, getStringExtra, và điều này sẽ tự động hoàn chỉnh cho tôi. Và sau đó hãy nhớ, cách chúng ta đánh dấu rằng bit dữ liệu là bằng cách cho nó lĩnh vực này ngay tại đây, chuỗi công cộng này, đó là các từ khóa cho chuỗi chúng tôi thực sự bao gồm. Nếu tôi nói MainActivity.Extra_Message nó phải có, và đây là loại giống như các tên tham số khi chúng tôi thông qua mã từ bộ điều khiển để các mẫu, khi chúng ta muốn nói tên mũi tên một cái gì đó. Đó là cùng một loại ý tưởng đó. Bây giờ, hãy nhớ điều này. Chúng tôi cũng đã tự động này tạo ra hoặc tự động tạo ra mã cho hoạt động kết quả, trong đó bao gồm xem văn bản ở giữa nói hello thế giới. Chúng tôi có khả năng có thể làm cho điều đó lớn hơn. Chúng ta hãy làm điều đó đầu tiên. Chúng ta có thể làm cho nó 40 mật độ điểm ảnh độc lập. Chúng ta hãy xem, đó là siêu khổng lồ. Rằng sẽ không sao đâu. Và sau đó để tham khảo quan điểm này văn bản cá nhân trong mã của chúng tôi chúng tôi sẽ cần phải cung cấp cho nó một ID, và để làm được điều đó chúng ta nói @ + id, có nghĩa là chúng ta gán cho nó ID. Nếu chúng ta chỉ nói @ id nó sẽ giả sử chúng ta đang tham khảo một ID đã tồn tại, và chúng ta hãy gọi này resultTextView của chúng tôi. Và nhận thấy rằng trong XML không cần cho dấu chấm phẩy hoặc bất cứ điều gì. Tất cả mọi thứ là trong các thẻ. Nó rất giống với HTML trong rất nhiều giác quan. Phải mất một chút để làm quen, nhưng cuối cùng bạn sẽ cảm thấy khá thoải mái với nó. Hãy cập nhật các văn bản cho xem văn bản kết quả của chúng tôi, và như chúng tôi đã làm khi chúng tôi nhận được rằng lĩnh vực văn bản chỉnh sửa trong các hoạt động khác của chúng tôi trong MainActivity đây chúng tôi cũng sẽ tương tự như vậy, chúng tôi sẽ tìm xem bởi ID. Và R, trong trường hợp tôi không đề cập đến điều này trước khi, là tham chiếu đến thư mục tài nguyên của chúng tôi, và sau đó ID là một tham chiếu đến tất cả mọi thứ trong thư mục tài nguyên, tất cả các ID, và resultTextView. Và cũng giống như trước đây, resultTextView là một đối tượng, có nghĩa là nó có tất cả các tài sản gắn liền với nó. Khi chúng tôi sử dụng gettext cho văn bản chỉnh sửa cho lĩnh vực này văn bản hoặc xem văn bản chúng tôi thực sự có thể sử dụng setText, và sau đó chúng tôi đã tìm thấy các tin nhắn từ mục đích, vì vậy tôi có thể nói tin nhắn, và điều này sẽ thực sự thiết lập các tin nhắn. Mất một chút thời gian để khởi động, và sau đó chúng ta có thể nhìn thấy hay không nó bị treo, nhưng bất kỳ câu hỏi về quá trình đó ngay lúc này, loại tương tác? Trong nhiều cách đó là đơn giản. Lý do tôi đi qua một cái gì đó tương đối đơn giản là, một lần nữa, bởi vì bạn có thể nhìn thấy sự tương tác giữa bố trí, mã nguồn, làm thế nào cho bạn những điều tham khảo và có thể có được một ít tiếp xúc với cách Java làm việc ở đó. Nếu tôi thực sự gõ một cái gì đó ở đây, như ohai, và sau đó tôi nhấn nút, nó sẽ khởi động một hoạt động mới, và xem văn bản nói ohai. Điều đó rất đơn giản, nhưng hy vọng sau khi ví dụ bạn loại thấy sự tương tác này hoạt động, và bây giờ là mớ hỗn độn các tập tin ở phía bên trái cho tất cả các thư mục dự án, hy vọng bạn biết nơi để tìm bây giờ. Đây là khu vực mã nguồn của bạn. Bố trí thực sự là điều duy nhất bạn sẽ giải quyết cho đến khi bạn bao gồm hình ảnh và drawables hoặc bất cứ điều gì, và giá trị, mà sẽ bao gồm chuỗi, như chúng tôi đã đề cập, và sau đó phong cách là một cái gì đó đại loại như CSS. Giải quyết nó khi bạn muốn, nhưng cho đến khi bạn cảm thấy thoải mái với việc thêm thêm sự tinh tế để ứng dụng của bạn không cần phải lo lắng về nó quá nhiều. Chỉ để quấn lên một điều khác mà bạn chắc chắn sẽ muốn bao gồm- giả sử bạn muốn tích hợp các tính năng mát mẻ và tiết kiệm cho mình thêm một số mã hóa- sẽ bao gồm thư viện của bên thứ 3. Dưới đây là những chàng trai nhỏ Android với Sherlock Holmes chiếc mũ. Đây là một hành động thanh Sherlock thư viện, mà về cơ bản có nghĩa là thanh hành động mà bạn đã thấy trước đó, mà bây giờ tiêu chuẩn trong Ice Cream Sandwich và Jelly Bean, nếu bạn muốn mang lại cho rằng loại kinh nghiệm người sử dụng cho người sử dụng trên phiên bản cũ và tiết kiệm cho mình từ lo lắng về cách thức người sử dụng sẽ điều hướng trên phiên bản cũ khi điều đó là không có bạn có thể bao gồm thư viện này và sau đó bạn chỉ cần tham khảo, chứ không phải là Android mặc định thư viện cho các thanh hành động, bạn tham khảo thư viện hỗ trợ này. Những thứ như Scoreloop, đó là tuyệt vời nếu bạn đang đi để bao gồm một trò chơi. Nó cho phép bạn thêm bảng lãnh đạo và thành tích để trò chơi. AdMob là một cách để đưa quảng cáo vào các ứng dụng của bạn trong trường hợp bạn muốn làm cho một ít tiền tắt của nó. Tất nhiên, có Facebook và Twitter để tích hợp có nếu bạn muốn chia sẻ những điều dễ dàng, vân vân. Dropbox, tương tự như vậy, và Google Analytics là biểu đồ mà tìm ai ở đó. Điều đó sẽ rất quan trọng nếu bạn thực sự muốn xem ai đang tương tác với ứng dụng của bạn hoặc người đó là ai, làm thế nào chúng tương tác, vân vân. Google, theo mặc định, nói lên rất nhiều số liệu thống kê về những người đã cài đặt ứng dụng của bạn và những gì điện thoại mà họ có, những gì các phiên bản hệ điều hành mà họ có. Nhưng nếu bạn muốn xem ai đang sử dụng nó trên một cơ sở hàng ngày và làm thế nào họ sử dụng nó sau đó bạn sẽ muốn bao gồm một số loại hệ thống theo dõi như thế. Khi bạn đã sẵn sàng để phân phối các ứng dụng của bạn Tôi không cần phải đi vào trong sâu quá nhiều. Nhấp vào liên kết ở đây, Google Play. Nó được sử dụng là thị trường Android. Họ đổi tên tất cả mọi thứ với Google Play, vì vậy bây giờ bạn gửi đến đó. Nó rất đơn giản. Bạn phải bao gồm một mô tả, một số ảnh chụp màn hình. Như tôi đã nói, không có quá trình phê duyệt như iOS. Và nơi để đi từ đây? Tôi cho bạn một ví dụ rất đơn giản. Hy vọng rằng nếu nó có vẻ khủng khiếp đơn giản sau đó có thể là một dấu hiệu tốt. Nếu bạn ở tất cả cảm thấy một chút bối rối hoặc không chắc chắn về chính xác những gì tôi đã gõ đó cũng tốt, nhưng từ đây đi đến Google Hướng dẫn. Đây là một nơi tuyệt vời để bắt đầu. Nó sẽ nói chuyện với bạn thông qua những gì họ mong đợi về mặt thiết kế ứng dụng, cách người sử dụng bình thường tương tác với nó. Nó nhiều hơn nữa hình thức miễn phí hơn iOS, tôi muốn nói, mà nó có vẻ như xem bảng được-Tôi không biết, đó là bánh mì và bơ của họ. Tất cả mọi thứ là một cái nhìn bàn trượt lên và xuống. Với Android, họ chắc chắn khuyến khích mọi người nhìn vào nó từ một bó toàn bộ các quan điểm khác nhau. Khi bạn bao gồm các bộ phát triển phần mềm trong ADT này theo mặc định bạn có một bó toàn bộ các dự án mẫu trong Android. Ngay tại đây, Android, dự án mẫu Android. Nếu tôi bấm vào đó, sau đó tôi có thể chọn một phiên bản mà các mẫu các dự án áp dụng. Có một bó toàn bộ những thứ khác nhau ở đây. Nó bắt đầu với khả năng tương thích thanh hành động, gia tốc chơi, sao lưu và phục hồi, Bluetooth, xây dựng cử chỉ. JetBoy là một trò chơi mẫu họ cung cấp cho bạn, như là LunarLander. Có một bó toàn bộ các ứng dụng mẫu ở đây, và tất cả họ đang nhắm vào các khía cạnh khác nhau của API của Android, và ý tưởng là khi bạn thực hiện ứng dụng của bạn bạn không cần phải học tất cả mọi thứ về Android để làm cho một ứng dụng Android. Bạn chỉ cần tìm hiểu về những phần mà bạn đang thực sự đi vào sử dụng. Nhìn vào những thư viện mẫu. Cảm thấy tự do để sao chép và dán mã và áp dụng lại nó. Đó là một điều tuyệt vời để xem xét mã khó khăn hơn và cố gắng để hiểu nó, đó là tất nhiên lý do tại sao trong CS50 chúng tôi thường xuyên cung cấp cho bạn một lượng lớn mã nguồn. Xem xét một số những điều này nếu bạn đang sử dụng các thư viện tương tự và sau đó áp dụng nó vào mã của riêng bạn. Và tất nhiên, có những hướng dẫn. Tìm kiếm các hướng dẫn. Tôi tìm thấy rất nhiều những cái tốt trực tuyến có thể mang lại cho bạn lên đến tốc độ với những gì thực sự là mảnh vỡ và làm thế nào bạn có thể sử dụng chúng. Một số trong những điều thiết kế mới, như mảnh vỡ, bạn thực sự không cần phải lo lắng về, trừ khi bạn đang thực hiện một khá lớn trong phạm vi dự án. Họ là những điều mà Google đang cố gắng thực nhập Stackoverflow là tất nhiên bạn bè của bạn. Hy vọng rằng tôi đã bán cho bạn một chút trên Android, nhận ra điều đó là dễ dàng hơn nhiều để tiếp cận về chỉ là ngôn ngữ mã hóa. Java là tôi muốn nói dễ dàng hơn nhiều để hiểu hơn Objective-C. Android đang phát triển tôi nghĩ nhiều hơn so với iOS. Tôi có nghĩa là, dữ liệu là có quá, ngoài những gì tôi nghĩ. Nó sẽ được khoảng một thời gian, và họ là một vài năm sau về chu trình thiết kế của họ, do đó, nó là loại dễ hiểu rằng họ vẫn đang làm việc thông qua một số các câu hỏi nhất quán, như thanh hành động này là một điều mới cho họ vẫn còn, loại tạo ra trải nghiệm người dùng tương tự như trên tất cả các ứng dụng của họ. Hy vọng rằng bạn có thể đi tiếp bây giờ và mở Eclipse và làm cho các ứng dụng Android của riêng bạn. Có ai có bất kỳ câu hỏi trước khi chúng tôi quấn lên về bất cứ điều gì? Tôi có thể cho bạn câu trả lời là 42. Vâng, hạnh phúc mã hóa tất cả mọi người, và may mắn. [CS50.TV]