/*
* Copyright 2009 Cedric Priscal
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android_serialport_api;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.util.Iterator;
import java.util.Vector;
import android.util.Log;
public class SerialPortFinder {
public class Driver {
public Driver(String name, String root) {
mDriverName = name;
mDeviceRoot = root;
}
private String mDriverName;
private String mDeviceRoot;
Vector<File> mDevices = null;
public Vector<File> getDevices() {
if (mDevices == null) {
mDevices = new Vector<File>();
File dev = new File("/dev");
File[] files = dev.listFiles();
int i;
for (i=0; i<files.length; i++) {
if (files[i].getAbsolutePath().startsWith(mDeviceRoot)) {
Log.d(TAG, "Found new device: " + files[i]);
mDevices.add(files[i]);
}
}
}
return mDevices;
}
public String getName() {
return mDriverName;
}
}
private static final String TAG = "SerialPort";
private Vector<Driver> mDrivers = null;
Vector<Driver> getDrivers() throws IOException {
if (mDrivers == null) {
mDrivers = new Vector<Driver>();
LineNumberReader r = new LineNumberReader(new FileReader("/proc/tty/drivers"));
String l;
while((l = r.readLine()) != null) {
// Issue 3:
// Since driver name may contain spaces, we do not extract driver name with split()
String drivername = l.substring(0, 0x15).trim();
String[] w = l.split(" +");
if ((w.length >= 5) && (w[w.length-1].equals("serial"))) {
Log.d(TAG, "Found new driver " + drivername + " on " + w[w.length-4]);
mDrivers.add(new Driver(drivername, w[w.length-4]));
}
}
r.close();
}
return mDrivers;
}
public String[] getAllDevices() {
Vector<String> devices = new Vector<String>();
// Parse each driver
Iterator<Driver> itdriv;
try {
itdriv = getDrivers().iterator();
while(itdriv.hasNext()) {
Driver driver = itdriv.next();
Iterator<File> itdev = driver.getDevices().iterator();
while(itdev.hasNext()) {
String device = itdev.next().getName();
String value = String.format("%s (%s)", device, driver.getName());
devices.add(value);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return devices.toArray(new String[devices.size()]);
}
public String[] getAllDevicesPath() {
Vector<String> devices = new Vector<String>();
// Parse each driver
Iterator<Driver> itdriv;
try {
itdriv = getDrivers().iterator();
while(itdriv.hasNext()) {
Driver driver = itdriv.next();
Iterator<File> itdev = driver.getDevices().iterator();
while(itdev.hasNext()) {
String device = itdev.next().getAbsolutePath();
devices.add(device);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return devices.toArray(new String[devices.size()]);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Google开源串口jnidemo
共124个文件
svn-base:33个
class:33个
entries:10个
4星 · 超过85%的资源 需积分: 18 40 下载量 16 浏览量
2016-11-17
08:53:37
上传
评论
收藏 239KB RAR 举报
温馨提示
Google官方的Android系统串口操作,应用层jni调用demo,方便上不了Google的童鞋下载。
资源推荐
资源详情
资源评论
收起资源包目录
Google开源串口jnidemo (124个子文件)
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 732B
all-wcprops 633B
all-wcprops 440B
all-wcprops 440B
all-wcprops 367B
all-wcprops 260B
all-wcprops 232B
all-wcprops 98B
resources.ap_ 24KB
SerialTest.apk 51KB
SerialTest.apk 51KB
SerialPort.c 4KB
proguard.cfg 1KB
SerialPortFinder.class 4KB
SerialPortActivity.class 3KB
SerialPort.class 2KB
LoopbackActivity.class 2KB
LoopbackActivity$SendingThread.class 2KB
SerialPortPreferences.class 2KB
SerialPortFinder$Driver.class 2KB
Application.class 2KB
ConsoleActivity$1.class 2KB
MainMenu.class 2KB
LoopbackActivity$SendingThread$1.class 1KB
ConsoleActivity.class 1KB
Sending01010101Activity$SendingThread.class 1KB
SerialPortActivity$ReadThread.class 1KB
Sending01010101Activity.class 1KB
R$id.class 1KB
MainMenu$5.class 1KB
SerialPortPreferences$2.class 1KB
SerialPortPreferences$1.class 1KB
MainMenu$4.class 1KB
ConsoleActivity$2.class 1KB
MainMenu$1.class 1023B
MainMenu$3.class 1018B
MainMenu$2.class 1017B
SerialPortActivity$1.class 960B
MainMenu$6.class 830B
R.class 722B
R$string.class 582B
R$layout.class 529B
R$array.class 473B
R$xml.class 437B
R$drawable.class 433B
R$attr.class 373B
.classpath 280B
classes.dex 21KB
entries 1KB
entries 1KB
entries 1KB
entries 887B
entries 614B
entries 614B
entries 573B
entries 425B
entries 421B
entries 303B
SerialPort.h 745B
SerialPortFinder.java 3KB
LoopbackActivity.java 3KB
SerialPortActivity.java 3KB
MainMenu.java 3KB
R.java 3KB
SerialPort.java 2KB
SerialPortPreferences.java 2KB
ConsoleActivity.java 2KB
Application.java 2KB
Sending01010101Activity.java 2KB
Android.mk 786B
Application.mk 35B
icon.png 5KB
icon.png 4KB
icon.png 3KB
icon.png 2KB
.project 846B
default.properties 362B
gen_SerialPort_h.sh 90B
libserial_port.so 13KB
libserial_port.so 13KB
libserial_port.so 9KB
icon.png.svn-base 5KB
SerialPort.c.svn-base 4KB
SerialPortFinder.java.svn-base 3KB
SerialPortFinder.java.svn-base 3KB
LoopbackActivity.java.svn-base 3KB
LoopbackActivity.java.svn-base 3KB
loopback.xml.svn-base 3KB
SerialPortActivity.java.svn-base 3KB
SerialPortActivity.java.svn-base 3KB
MainMenu.java.svn-base 3KB
MainMenu.java.svn-base 3KB
SerialPort.java.svn-base 2KB
SerialPort.java.svn-base 2KB
SerialPortPreferences.java.svn-base 2KB
SerialPortPreferences.java.svn-base 2KB
ConsoleActivity.java.svn-base 2KB
ConsoleActivity.java.svn-base 2KB
共 124 条
- 1
- 2
资源评论
- YY幸福猪2017-10-09开源JNI代码,可以参考下
- t1235813212017-09-04啦啦啦啦啦啦啦啦啦啦啦
BlackSmith-2617
- 粉丝: 97
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功