package gnu.sercd;
import java.io.File;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import android.app.AlertDialog;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.serialport.SerialPortFinder;
import android.util.Log;
public class Sercd extends PreferenceActivity {
protected static final String TAG = "Sercd";
private CheckBoxPreference mEnabled;
private ListPreference mSerialPort;
private ListPreference mNetworkInterfaces;
private EditTextPreference mNetworkPort;
private OnPreferenceChangeListener mPreferenceChangeListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary((CharSequence)newValue);
return true;
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Load preferences from XML */
addPreferencesFromResource(R.xml.preferences);
/* Fetch corresponding Java objects */
mEnabled = (CheckBoxPreference)findPreference("enabled");
mSerialPort = (ListPreference)findPreference("serialport");
mNetworkInterfaces = (ListPreference)findPreference("netinterface");
mNetworkPort = (EditTextPreference)findPreference("portnumber");
/* Complete lists, etc */
mSerialPort.setOnPreferenceChangeListener(mPreferenceChangeListener);
mSerialPort.setSummary(mSerialPort.getValue());
mNetworkInterfaces.setOnPreferenceChangeListener(mPreferenceChangeListener);
mNetworkInterfaces.setSummary(mNetworkInterfaces.getValue());
mNetworkPort.setOnPreferenceChangeListener(mPreferenceChangeListener);
mNetworkPort.setSummary(mNetworkPort.getText());
mEnabled.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ((Boolean)newValue) {
String serialport = mSerialPort.getValue();
String networkinterface = mNetworkInterfaces.getValue();
/* Check access permission */
File device = new File(serialport);
if (!device.canRead() || !device.canWrite()) {
try {
/* Missing read/write permission, trying to chmod the file */
Process su;
su = Runtime.getRuntime().exec("/system/bin/su");
String cmd = "chmod 666 " + device.getAbsolutePath() + "\n"
+ "exit\n";
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead()
|| !device.canWrite()) {
new AlertDialog.Builder(Sercd.this)
.setMessage(R.string.su_failed)
.show();
return false;
}
} catch (Exception e) {
e.printStackTrace();
new AlertDialog.Builder(Sercd.this)
.setMessage(R.string.su_failed)
.show();
return false;
}
}
int port = Integer.parseInt(mNetworkPort.getText());
Log.d(TAG, "Starting sercd with parameters "
+ serialport + ", " + networkinterface
+ ":" + port);
SercdService.Start(
Sercd.this,
serialport,
networkinterface,
port
);
} else {
SercdService.Stop(Sercd.this);
}
return true;
}
});
feedNetworkInterfacesList();
feedSerialPortList();
if (mEnabled.isChecked()) {
// SercdService.Start(this, "/dev/ttyMSM2", "127.0.0.1", 30001);
}
}
private void feedSerialPortList() {
SerialPortFinder spf = new SerialPortFinder();
mSerialPort.setEntries(spf.getAllDevices());
mSerialPort.setEntryValues(spf.getAllDevicesPath());
}
private void feedNetworkInterfacesList() {
Enumeration<NetworkInterface> nets;
try {
nets = NetworkInterface.getNetworkInterfaces();
ArrayList<String> displaynames = new ArrayList<String>();
ArrayList<String> names = new ArrayList<String>();
while(nets.hasMoreElements()) {
NetworkInterface net = nets.nextElement();
Enumeration<InetAddress> inets = net.getInetAddresses();
while(inets.hasMoreElements()) {
InetAddress inet = inets.nextElement();
String address = inet.getHostAddress();
displaynames.add(address + " (" + net.getDisplayName() + ")");
names.add(address);
}
}
int size = displaynames.size();
int i;
CharSequence[] a = new CharSequence[size];
CharSequence[] b = new CharSequence[size];
for (i=0; i<size; i++) {
a[i] = displaynames.get(i);
b[i] = names.get(i);
}
mNetworkInterfaces.setEntries(a);
mNetworkInterfaces.setEntryValues(b);
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// SercdService.Stop(this);
super.onDestroy();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
谷歌开源的串口类android-serialport-api
共50个文件
java:12个
xml:11个
h:5个
需积分: 15 13 下载量 112 浏览量
2022-03-29
10:34:24
上传
评论
收藏 98KB ZIP 举报
温馨提示
android 串口通讯开发 android-serialport-api包。google的开源包。里面已经带了google发布好的so文件。
资源详情
资源评论
资源推荐
收起资源包目录
android-serialport-api-master.zip (50个子文件)
android-serialport-api-master
android-serialport-api
project
AndroidManifest.xml 1KB
jni
Application.mk 35B
Android.mk 786B
SerialPort.c 4KB
SerialPort.h 745B
gen_SerialPort_h.sh 90B
libs
armeabi-v7a
libserial_port.so 12KB
armeabi
libserial_port.so 12KB
x86
libserial_port.so 5KB
run_emulator.sh 120B
src
android_serialport_api
SerialPortFinder.java 3KB
SerialPort.java 2KB
sample
SerialPortPreferences.java 2KB
SerialPortActivity.java 3KB
LoopbackActivity.java 3KB
Application.java 2KB
ConsoleActivity.java 2KB
Sending01010101Activity.java 2KB
MainMenu.java 3KB
res
values
strings.xml 1KB
baudrates.xml 2KB
layout
loopback.xml 3KB
console.xml 846B
main.xml 2KB
sending01010101.xml 430B
xml
serial_port_preferences.xml 471B
drawable
icon.png 5KB
android-sercd
Application.mk 69B
project
.project 816B
AndroidManifest.xml 698B
jni
.project 2KB
COPYING 18KB
Android.mk 831B
.cproject 30KB
android.c 2KB
android.h 1KB
unix.h 688B
sercd-jni.h 913B
sercd.c 53KB
unix.c 26KB
sercd.h 7KB
src
android
serialport
SerialPortFinder.java 3KB
gnu
sercd
Sercd.java 5KB
SercdService.java 4KB
res
values
strings.xml 958B
xml
preferences.xml 1KB
drawable
notification_icon_connected.png 2KB
notification_icon_ready.png 2KB
icon.png 5KB
.classpath 273B
共 50 条
- 1
fangzhij
- 粉丝: 1
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0