我有一个大文本文件(5Mb),我在我的Android应用程序中使用.我将文件创建为预先排序的字符串列表,文件创建后不会更改.如何对该文件的内容执行二进制搜索,而无需逐行读取以查找匹配的字符串?
我正在使用来自 android 的示例应用程序:BluetoothChat。但是,当我尝试发送大小大于 1024 字节的字符串时,消息不会传输。我尝试更改下面的代码以发送超过 1024 个字节,但我没有成功。请帮我。
阅读代码:
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(SmallWorld.MESSAGE_READ, bytes, -1,
buffer).sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
发送代码:
public void write(byte[] buffer) {
try {
mmOutStream.write(buffer);
// Share …Run Code Online (Sandbox Code Playgroud) 我知道有很多关于这个问题的问题.但我找不到任何帮助我的东西.我知道如何通过此代码获取所有具有电话号码的Android联系人:
private List fillContactsList() {
List tmpList = new ArrayList();
Cursor c = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (c.moveToNext()) {
String ContactID = c.getString(c
.getColumnIndex(ContactsContract.Contacts._ID));
String name = c.getString(c
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhone = c
.getString(c
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Integer.parseInt(hasPhone) == 1) {
Cursor phoneCursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "='" + ContactID + "'", null, null);
while (phoneCursor.moveToNext()) {
String number = phoneCursor
.getString(phoneCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
con = new Contact();
con.setName(name);
con.setNumber(number);
tmpList.add(con);
}
phoneCursor.close();
}
}
c.close();
Collections.sort(tmpList); …Run Code Online (Sandbox Code Playgroud) 我不知道如何计算3D中两个矢量(由3个点定义)的角平分线.例如:我的观点是:
P1=[0 0 0];
p2=[26.94,-6.68,42.76];
P3=[7.2804 -11.1231 46.6817];
Run Code Online (Sandbox Code Playgroud)
p2是角平分线的起点.

p1=[0 0 0];
p2=[26.94,-6.68,42.76];
p3=[7.2804 -11.1231 46.6817];
V1=[(p1(1)-p2(1)) (p1(2)-p2(2)) (p1(3)-p2(3))];
V2=[(p2(1)-p3(1)) (p2(2)-p3(2)) (p2(3)-p3(3))];
V1=V1/norm(V1);
V2=V2/norm(V2);
Bisector=V1+V2;
figure
hold on
plot3([p3(3),p2(3)],[p3(2),p2(2)],[p3(1),p2(1)],'Color','r','LineWidth',2)
plot3([p1(3),p2(3)],[p1(2),p2(2)],[p1(1),p2(1)],'Color','r','LineWidth',2)
plot3([p2(3),Bisector(3)],[p2(2),Bisector(2)],[p2(1),Bisector(1)],'Color','y','LineWidth',2)
Run Code Online (Sandbox Code Playgroud)
