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串口通信源码(android-serialport-api)
共104个文件
svn-base:50个
java:12个
xml:11个
4星 · 超过85%的资源 需积分: 33 49 下载量 69 浏览量
2015-01-27
14:34:55
上传
评论
收藏 252KB ZIP 举报
温馨提示
从google下载到的android串口通信源码(android-serialport-api),我没动过,里面还有一个apk,代码比较老,但是很有参考价值
资源推荐
资源详情
资源评论
收起资源包目录
android串口通信源码(android-serialport-api) (104个子文件)
SerialPort_1.1.apk 43KB
sercd.c 53KB
unix.c 26KB
SerialPort.c 4KB
android.c 2KB
.classpath 273B
COPYING 18KB
.cproject 30KB
wc.db 99KB
entries 3B
format 3B
sercd.h 7KB
android.h 1KB
sercd-jni.h 913B
SerialPort.h 745B
unix.h 688B
Sercd.java 5KB
SercdService.java 4KB
SerialPortFinder.java 3KB
LoopbackActivity.java 3KB
SerialPortFinder.java 3KB
SerialPortActivity.java 3KB
MainMenu.java 3KB
SerialPort.java 2KB
SerialPortPreferences.java 2KB
ConsoleActivity.java 2KB
Application.java 2KB
Sending01010101Activity.java 2KB
Android.mk 831B
Android.mk 786B
Application.mk 69B
Application.mk 35B
icon.png 5KB
icon.png 5KB
notification_icon_connected.png 2KB
notification_icon_ready.png 2KB
.project 2KB
.project 816B
run_emulator.sh 120B
gen_SerialPort_h.sh 90B
libserial_port.so 12KB
libserial_port.so 12KB
libserial_port.so 5KB
1e2c17718855b0e9b2b198a2f2097cbb7ca08c2e.svn-base 53KB
95c3e73111c3538467a9e1ccb1c671702d47b550.svn-base 30KB
2be168e9170f7e7c7048e0bba41d969dec9967d0.svn-base 26KB
075d599585584bb0e4b526f5c40cb6b17e0da35a.svn-base 18KB
fb4730f0699d33d072ab58bca8236b30a78848d7.svn-base 12KB
ee108764ca46781e9d00c3c9bcc6980a30bac345.svn-base 12KB
7a8d6f91745a71601cbc1d09550f5bf2f568a1db.svn-base 7KB
5a1a51e99179c195f86fe71beb718eddbbbd7d03.svn-base 5KB
6d3ac9b7cd3c141ecef07285b06bfc815bc43d49.svn-base 5KB
c64d585dbb0c55729da1008caed955b265b287bc.svn-base 5KB
58a75f355714dbfd25a85f088d866f8b3f25cb44.svn-base 5KB
dd238e059a293d241475c85803ed9e30fc7d015d.svn-base 4KB
a90d132878085c5a5a8462e2579bdf6927bdff51.svn-base 4KB
1e92a7b9e0367647a3e253f3e7885e25dbf80a32.svn-base 3KB
4dd17e198b7f5a49b6606f19e8055cb61c8a2907.svn-base 3KB
9fc6a47380719df5bd233407fac7ed9a5b00abcb.svn-base 3KB
5746cf09d65c6920cae4498b9b33534a8a7e469c.svn-base 3KB
8c11e17ce50940fad42b837fef56dec770157441.svn-base 3KB
7645a7edcd98a67418f82b9a21780a88de5045c2.svn-base 3KB
826c6b68bb12229629b24251707b774f1a362e89.svn-base 2KB
ebda0d42caf6c12b39dc54bc57982134d00ccf99.svn-base 2KB
00b7fd841d3526844207e3c86cbf8b80be583abb.svn-base 2KB
f68a87200299dbdd280384592c6da8bbba0d6cc0.svn-base 2KB
af82f905eb6b36ab6f14d6fdf1ed46e09598c41f.svn-base 2KB
799e74e20212d27f413853f58f645f2b82fa8b6f.svn-base 2KB
f7782e3d0a6349cdbec71c47f7eae771ca62a0b1.svn-base 2KB
bdc577012cca3d99313947536e60afde396884d4.svn-base 2KB
34aa05af72b9662fe2a12641b0450d7632a9bda1.svn-base 2KB
465c3e3932dc83f4f1293d7e805d7b80cdd261c0.svn-base 2KB
9bb3ddba529f0538efa9497ad49e2d1fb58d8b3d.svn-base 2KB
d540055c41d0f6c94aa1dd38021d44fecd29beee.svn-base 1KB
258c2e56b19a684cfa70d16cf08c69dd7cd50c52.svn-base 1KB
cd53b6b414468af99531d821da04228281188153.svn-base 1KB
a7dc16614151fec46c18a090b7586364b6e359f3.svn-base 1KB
8bc28ad98a06ef699c91ab3ca955af466b3be1b2.svn-base 958B
f8cc66f51c429cb37e6cf30a1f40d473dd7ba87d.svn-base 913B
1476ffd69f6d64f3d741f824c57f972ebefb2a3c.svn-base 846B
a136dd38132726f2301c9f06fe5ec56600397364.svn-base 831B
71ba50262e1b08f684bcca6140ab6a5667c08ab3.svn-base 816B
6733fe6639c55224bb3c0cf24faa9cc32f5fdd08.svn-base 786B
e663fecbafe006a7a964243bd3defa5f361a0f90.svn-base 745B
34f3609720b8dfaad612c6a44589c001b7c7f2f5.svn-base 698B
3dd301b9e9479d6292b3e2a589724a4c1f2ceb77.svn-base 688B
3968f91ef422b629170dce83edc5a9b01673afb1.svn-base 471B
e9550956a7b8e4f2465ee44a6b127b1e827c2b74.svn-base 430B
47f6e55181dc7d5be10885b5860b7ec5afecac9c.svn-base 273B
f1448ce83f239798d948d10278b8033fb784d9fe.svn-base 120B
9f3c2ec918827fa266209dbc596c417a7fc87324.svn-base 90B
938173f6f87b28418d6c7a9a5594deaa0271ac35.svn-base 69B
76ce0b8603d3e37392115a9d27da04f19582950b.svn-base 35B
loopback.xml 3KB
baudrates.xml 2KB
main.xml 2KB
strings.xml 1KB
preferences.xml 1KB
AndroidManifest.xml 1KB
strings.xml 958B
共 104 条
- 1
- 2
资源评论
- phoenix_wanng2018-03-30实用 非常好
- functionAndClass2017-09-28非常好哦。
自由之翼2015
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功