This 3-sentence summary provides an overview of the key information from the document:
The document announces an upcoming Android technology conference called DroidKaigi, noting that it will provide a safe and inclusive environment for sharing knowledge and discussing problems in the Android field, with over 800 attendees including those from overseas, and featuring 67 sessions led by professional engineers on the latest technologies.
ET West 2013 テクニカルセッション
【講演概要】
モバイル分野においてAndroid OSは大きなシェアを占めており重要性は日々、高まっている。本セッションではAndroidの最新動向を解説するとともに、実際のAndroidアプリ開発ワークフローに即して、組込みデバイス特有の課題の抽出と解決に向けたテクニックを解説する。またアプリ開発におけるセキュリティ?安全性リスクへの考察を通し、Androidへの理解を深める。
※受講対象者:Androidアプリ開発をこれから始める方、日頃から取り組んでいる方
This document contains information about DroidKaigi, an Android developer conference. It includes the following key details:
- Masahiro Hidaka is the representative for the conference.
- Network information and facilities details are provided.
- A survey on Android developer statistics in Japan is presented, covering demographics like age, experience levels, business types, development practices.
- The conference schedule is outlined, including sessions, speakers and an after party event. Feedback from attendees is requested.
2013年5月6日に横浜Android and モバイルOS プラットフォーム部で発表した資料です。Androidアプリ開発者向けにOutofMemoryErrorの発生原理とメモリ管理について最新事情を加味してまとめました。Androidアプリにおけるメモリ事情は(初期に比べたら)改善していますが、OpenCVなど画像処理の需要、高解像度対応を踏まえると依然として十分とは言いがたいユースケースもあります。そんな中でメモリ資源をうまく使うための指標となれば幸いです。
The document discusses Google I/O 2017, including a recap of the event dates and attendees. It also mentions some of the themes covered at I/O like Mobile First, AI First, assistants, and the web. The final messages thank the recipients for their participation in discussing Google I/O.
This document provides an overview of Android Things Developer Preview 5. It discusses the Raspberry Pi 3 developer kit hardware specifications and how to get started with flashing the Android Things image to the microSD card. It also covers how to connect to WiFi and control an LED using the Android Things Console and Android Studio. Finally, it summarizes the available APIs for peripheral I/O and device management as well as links to documentation and codelabs for learning Android Things application development.
ET West 2013 テクニカルセッション
【講演概要】
モバイル分野においてAndroid OSは大きなシェアを占めており重要性は日々、高まっている。本セッションではAndroidの最新動向を解説するとともに、実際のAndroidアプリ開発ワークフローに即して、組込みデバイス特有の課題の抽出と解決に向けたテクニックを解説する。またアプリ開発におけるセキュリティ?安全性リスクへの考察を通し、Androidへの理解を深める。
※受講対象者:Androidアプリ開発をこれから始める方、日頃から取り組んでいる方
This document contains information about DroidKaigi, an Android developer conference. It includes the following key details:
- Masahiro Hidaka is the representative for the conference.
- Network information and facilities details are provided.
- A survey on Android developer statistics in Japan is presented, covering demographics like age, experience levels, business types, development practices.
- The conference schedule is outlined, including sessions, speakers and an after party event. Feedback from attendees is requested.
2013年5月6日に横浜Android and モバイルOS プラットフォーム部で発表した資料です。Androidアプリ開発者向けにOutofMemoryErrorの発生原理とメモリ管理について最新事情を加味してまとめました。Androidアプリにおけるメモリ事情は(初期に比べたら)改善していますが、OpenCVなど画像処理の需要、高解像度対応を踏まえると依然として十分とは言いがたいユースケースもあります。そんな中でメモリ資源をうまく使うための指標となれば幸いです。
The document discusses Google I/O 2017, including a recap of the event dates and attendees. It also mentions some of the themes covered at I/O like Mobile First, AI First, assistants, and the web. The final messages thank the recipients for their participation in discussing Google I/O.
This document provides an overview of Android Things Developer Preview 5. It discusses the Raspberry Pi 3 developer kit hardware specifications and how to get started with flashing the Android Things image to the microSD card. It also covers how to connect to WiFi and control an LED using the Android Things Console and Android Studio. Finally, it summarizes the available APIs for peripheral I/O and device management as well as links to documentation and codelabs for learning Android Things application development.
Google App Engine/Java(+ slim3)を使って、Webアプリケーションによくあるいろんな機能を実現するために色々と試行錯誤したことについてのお話。
「GAEだと、この機能はこうやればできるんだ!」ということを少しでも知ってもらって、一人でも多くの方がGAEで何かを作ってもらえるようになればな~、と思っています!
DroidKaigi 2019 Day.1 WelcomeTalk #droidkaigi のウェルカムトークです。
https://droidkaigi.jp/2019/
What is DroidKaigi?
DroidKaigiはエンジニアが主役のAndroidカンファレンスです。
Android技術情報の共有とコミュニケーションを目的に、2019年2月7日(木)、8日(金)の2日間開催します。
What is DroidKaigi?
DroidKaigi is a conference tailored for Android developers.
It's scheduled to take place on the 7th and 8th of February 2019.
Google I/O 2018 KeynoteとDeveloper KeynoteのOverviewMasahiro Hidaka
?
5月15日(火)に開催するGoogle I/O 2018報告会(Google Play APP DOJO)での講演資料です。Day.1のKeynoteおよびDeveloper Keynoteでのトピックをまとめた概要資料です。
Google AIの活用事例(アシスタント等での利用)に触れながらAndroidプラットフォームへの影響、今年一年の動きをカンファレンス参加した経験から共有します
- The document discusses details about DroidKaigi, an annual Android developer conference in Japan with over 1000 attendees from around the world.
- Past conferences have included 400-800 attendees and 21-85 technical sessions presented by professional engineers.
- DroidKaigi aims to provide a safe and sharing environment for developers to learn about niche Android technologies through knowledge sharing and communication.
- The document provides information on sponsors, sessions, speakers, and facilities at DroidKaigi.
The document discusses KotlinConf 2017, a two day conference with over 1200 attendees focused on Kotlin. It mentions talks about Kotlin as a first class citizen on Android, new features in Kotlin, .NET support, validation, Kotlin/Native, CLION, Swift, and WebAssembly. The final messages thank the audience and provide contact information for the speaker.
11. // Local Bluetooth adapter
private BluetoothAdapter mBluetoothAdapter = null;
// Get local Bluetooth adapter
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// If the adapter is null, then Bluetooth is not supported
if (mBluetoothAdapter == null) {
Toast.makeText(this, "Bluetooth is not available",
Toast.LENGTH_LONG).show();
finish();
return;
}
? 機器がBluetooth対応しているか、確認できる
12. @Override
public void onStart() {
super.onStart();
if(D) Log.e(TAG, "++ ON START ++");
// If BT is not on, request that it be enabled.
// setupChat() will then be called during onActivityResult
if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the chat session
} else {
if (mChatService == null) setupChat();
}
}
? 機器がBluetooth対応しているかIntentをつかってシス
テムへ問い合わせ。
13. public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(D) Log.d(TAG, "onActivityResult " + resultCode);
switch (requestCode) {
case REQUEST_ENABLE_BT:
// When the request to enable Bluetooth returns
if (resultCode == Activity.RESULT_OK) {
// Bluetooth is now enabled, so set up a chat session
setupChat();
} else {
// User did not enable Bluetooth or an error occured
Log.d(TAG, "BT not enabled");
Toast.makeText(this, R.string.bt_not_enabled_leaving,
Toast.LENGTH_SHORT).show();
finish();
}
}
}
? 問い合わせの結果、RESULT_OKであれば使える
18. // Get the local Bluetooth adapter
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
// Get a set of currently paired devices
Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();
// If there are paired devices, add each one to the ArrayAdapter
if (pairedDevices.size() > 0) {
findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
for (BluetoothDevice device : pairedDevices) {
mPairedDevicesArrayAdapter.add(device.getName() + "?n" +
device.getAddress());
}
} else {
String noDevices = getResources().getText(R.string.none_paired).toString();
mPairedDevicesArrayAdapter.add(noDevices);
}
? BluetoothAdapter#getBondedDevices()
19. DeviceListActivity.java
// The on-click listener for all devices in the ListViews
private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {
// Get the device MAC address, which is the last 17 chars in the View
String info = ((TextView) v).getText().toString();
String address = info.substring(info.length() - 17);
// Create the result Intent and include the MAC address
Intent intent = new Intent();
intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
// Set result and finish this Activity
setResult(Activity.RESULT_OK, intent);
finish();
}
};
? リモートデバイスはMacAddressで特定できる
20. BluetoothChat.java
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:
// When DeviceListActivity returns with a device to connect
if (resultCode == Activity.RESULT_OK) {
// Get the device MAC address
String address = data.getExtras()
.getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
// Attempt to connect to the device
mChatService.connect(device);
}
break;
? ペアリング済みリストからMAC Addressを取得
? MAC Addressからリモートデバイスを特定
23. BluetoothChatService.java
/**
* Start the ConnectThread to initiate a connection to a remote device.
* @param device The BluetoothDevice to connect
*/
public synchronized void connect(BluetoothDevice device) {
// Cancel any thread currently running a connection
if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}
// Start the thread to connect with the given device
mConnectThread = new ConnectThread(device);
mConnectThread.start();
setState(STATE_CONNECTING);
}
? ペアリング済みリストからMAC Addressを取得
? MAC Addressからリモートデバイスを特定
24. private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
public ConnectThread(BluetoothDevice device) {
mmDevice = device;
BluetoothSocket tmp = null;
// Get a BluetoothSocket for a connection with the
// given BluetoothDevice
try {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(TAG, "create() failed", e);
}
mmSocket = tmp;
}
? ConnectThreadの初期化
25. private class ConnectThread extends Thread {
public void run() {
Log.i(TAG, "BEGIN mConnectThread");
// Make a connection to the BluetoothSocket
try {
// This is a blocking call and will only return on a
// successful connection or an exception
mmSocket.connect();
} catch (IOException e) {
connectionFailed();
// Close the socket
try {
mmSocket.close();
} catch (IOException e2) {
Log.e(TAG, "unable to close() socket during connection failure", e2);
}
// Start the service over to restart listening mode
BluetoothChatService.this.start();
return;
}
27. private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket; private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the BluetoothSocket input and output streams
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "temp sockets not created", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
? 通信が確立しているBluetoothSocketを介する
}
28. public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
? 通信が確立しているBluetoothSocketを介する
? mHandlerで、READ/WRITEなど動作完了をUIスレッドに通知
29. /**
* Write to the connected OutStream.
* @param buffer The bytes to write
*/
public void write(byte[] buffer) {
try {
mmOutStream.write(buffer);
// Share the sent message back to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_WRITE, -1, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "Exception during write", e);
}
}
? mmOutStreamの接続先SocketはBluetoothSocket
30. private void sendMessage(String message) {
// Check that we're actually connected before trying anything
if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
return;
}
// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
byte[] send = message.getBytes();
mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
mOutStringBuffer.setLength(0);
mOutEditText.setText(mOutStringBuffer);
}
}
? mChatService.wirteがConnectedThreadに繋がる