http://mybd.sitemix.jp/pic_24FJ64GB002_2.html
回路図(必要な所だけ)
後は、 PIC24FJ64GB002でAndroid Accessory:ADK
の記事を参考に進める。
試す場合は自己責任でお願いします。
パソコンやアンドロイド端末が壊れる可能性があります。
import android.os.Bundle; import android.app.Activity; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //データベース作成 SQLiteDatabase db; db = openOrCreateDatabase( "TestData.db" , SQLiteDatabase.CREATE_IF_NECESSARY , null ); //テーブル作成 String sql = "CREATE TABLE IF NOT EXISTS table_name (" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT);"; db.execSQL(sql); //レコードの追加 ContentValues val = new ContentValues(); val.put( "name", "sakkura" ); db.insert( "table_name", null, val ); db.close(); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" /> </LinearLayout>
ディスプレイ・サイズ | 約 4.6インチ |
赤外線通信対応 | IrSimpleTM/IrSSTMには非対応です。 |
Bluetooth®通信 | Bluetooth® 4.0 |
GPS | オートGPS/海外GPS対応 |
モーションセンサー | 取扱説明書 34p |
電子コンパス | 取扱説明書 129p |
温度センサー | 取扱説明書 24p |
湿度センサー | 取扱説明書 24p |
RGBセンサー | 取扱説明書 24p |
近接センサー | 取扱説明書 24p |
FMトランスミッタ | 取扱説明書 24p |
指紋センサー | 取扱説明書 24p |
import android.os.Bundle; import android.app.Activity; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); waitTime();// 時間のかかる処理 Toast.makeText(this, "時間の掛かる処理終了後に実行されるはず", Toast.LENGTH_LONG).show(); } private void waitTime() { // TODO 自動生成されたメソッド・スタブ try { Thread.sleep(10 * 1000); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } }
import android.os.Bundle; import android.app.Activity; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub waitTime();// 時間のかかる処理 } }).start(); Toast.makeText(this, "時間の掛かる処理終了前に表示されるはず", Toast.LENGTH_LONG).show(); } private void waitTime() { // TODO 自動生成されたメソッド・スタブ try { Thread.sleep(10 * 1000); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } }
import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView1); final Handler handler = new Handler(); new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub final int num = waitTime();//時間のかかる処理 handler.post(new Runnable() { public void run() { //int num = waitTime();// ここに置いたら別スレッドにならない textView.setText("UIを変更::" + num); } }); } }).start(); Toast.makeText(this, "これが先に実行されるはず", Toast.LENGTH_LONG).show(); } private int waitTime() { // TODO 自動生成されたメソッド・スタブ try { Thread.sleep(10 * 1000);//10秒待つ } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } return 2012; } }
import java.io.File; import java.io.IOException; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { private MyHTTPD server; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); //File am = new File("/data/data/com.example.servertest/lib/", "");// File am = new File("/mnt/sdcard/", "");// try { server = new MyHTTPD(8080, am); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onPause() { super.onPause(); if (server != null) server.stop(); } private class MyHTTPD extends NanoHTTPD { public MyHTTPD(int port, File wwwroot) throws IOException { super(port, wwwroot); // TODO 自動生成されたコンストラクター・スタブ } } }
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content"> <!-- フォーカスされていない --> <!-- ボタンが押されていない --> <item android:state_focused="false" android:state_pressed="false"> <layer-list> <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#000000" android:centerColor="#ffffff" android:endColor="#000000" android:type="linear" /> <corners android:radius="4dip" /> <stroke android:width="1dip" android:color="#ffffff" /> <padding android:top="5dip" android:bottom="5dip"/> </shape></item> </layer-list></item> <!-- フォーカスされていない --> <!-- ボタンが押されている --> <item android:state_focused="false" android:state_pressed="true"><layer-list> <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#ffffff" android:centerColor="#000000" android:endColor="#ffffff" android:type="linear" /> <corners android:radius="4dip" /> <stroke android:width="1dip" android:color="#ffffff" /> </shape></item> </layer-list></item> <!-- フォーカスされた --> <!-- ボタンが押されていない --> <item android:state_focused="true" android:state_pressed="false"><layer-list> <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#000000" android:centerColor="#ffffff" android:endColor="#000000" android:type="linear" /> <corners android:radius="4dip" /> <stroke android:width="1dip" android:color="#FF6600" /> </shape></item> </layer-list></item> <!-- フォーカスされた --> <!-- ボタンが押されている --> <item android:state_focused="true" android:state_pressed="true"><layer-list> <item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#ffffff" android:centerColor="#000000" android:endColor="#ffffff" android:type="linear" /> <corners android:radius="4dip" /> <stroke android:width="1dip" android:color="#CC6600" /> </shape></item> </layer-list></item> </selector>
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="button" > <item name="android:layout_marginTop">1dip</item> <item name="android:layout_marginBottom">1dip</item> </style> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" ><Button android:id="@+id/button1" style="@style/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@layout/mybutton" android:text="Button" /> <Button android:id="@+id/button2" style="@style/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@layout/mybutton" android:text="Button" /> </LinearLayout>
package com.example.servertest; import java.io.File; import java.io.IOException; import java.util.Properties; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { private MyHTTPD server; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); try { server = new MyHTTPD(8080, null); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onPause() { super.onPause(); if (server != null) server.stop(); } private class MyHTTPD extends NanoHTTPD { public MyHTTPD(int port, File wwwroot) throws IOException { super(port, wwwroot); // TODO 自動生成されたコンストラクター・スタブ } @Override public Response serve(String uri, String method, Properties header, Properties parms, Properties files) { System.out.println(method + " '" + uri + "' "); String msg = "<html><body><h1>Hello server</h1>\n"; msg += "</body></html>\n"; return new NanoHTTPD.Response(HTTP_OK, MIME_HTML, msg); } } }
import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.MediaController; import android.widget.VideoView; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VideoView videoView = (VideoView)findViewById(R.id.videoView1); videoView.setMediaController(new MediaController(this)); String LINK = "http://www.xxx.jp/xxx/xxx.mp4"; Uri uri=Uri.parse(LINK); VideoView video=(VideoView)findViewById(R.id.videoView1); video.setVideoURI(uri); video.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }AVDでは再生は出来るが画質が悪い、
import android.app.Activity; import android.os.Bundle; import android.os.CountDownTimer; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.widget.LinearLayout; public class CountdownTimerActivity extends Activity { /** Called when the activity is first created. */ private boolean mTimerRunning = false; private boolean doubleTapFlag = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout listView = (LinearLayout) findViewById(R.id.LinearLayout1); //ダブルタップの間隔取得 final int doubleTime = ViewConfiguration.getDoubleTapTimeout(); listView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { Log.i("TAG", "タップされた"); // 二重起動を防止する if (!mTimerRunning) { mTimerRunning = true; // カウントダウンする new CountDownTimer(doubleTime, 1) { // カウントダウン処理 public void onTick(long millisUntilFinished) { } // カウントが0になった時の処理 public void onFinish() { if( doubleTapFlag ){ Log.v("LOG", "ダブルタップ"); doubleTapFlag = false; }else{ Log.i("LOG", "シングルタップ"); } mTimerRunning = false; } }.start(); }else{ //ダブルタップ doubleTapFlag = true; } return false; } }); } }