我需要使用谷歌android 2.1获取该地区可用的蓝牙设备列表.
事实是,我不仅需要这些设备的列表,我需要为每个设备找到一些唯一的ID,我需要一个指示器,接收信号的"好"程度(如android.wifi.ScanResult中的"级别") )... 我怎么做?
我正在Google Android 2.1中编写一个应用程序,需要知道设备(HTC Hero)面向哪个方向(n/w/s/e).传感器及其听众工作得很好,但我从传感器获得的值非常糟糕.例如它告诉我当设备面向SW时我会面向北方......
这似乎是Android设备的已知问题.我在网上找到的"解决方案"如下所示:
这被认为是触发传感器重新校准的原因.而且:"四处走动"的东西对我有用......但我觉得这不是很专业......
那么 - 如何从SDK触发方向传感器的重新校准?我需要对传感器进行适当的校准,而没有任何花哨的东西会让这个应用程序的用户看起来像完全白痴,而他们"手动"重新校准他们的手机......
有没有办法做到这个"正确"?
编辑:
或者:有没有办法确定PROGRAMMATICY,如果设备是否正确校准?作为后备选项可以说......然后我可以警告用户该设备需要"手动"重新校准.
我正在尝试获取有关我的手机可以"看到"atm的相邻单元格的信息.到现在为止还挺好.我是这样做的:
telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//...
ArrayList<NeighboringCellInfo> neighboringCellList = (ArrayList<NeighboringCellInfo>) telManager.getNeighboringCellInfo();
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个名单一直都是空的.即使在不同的地方.我住在柏林,所以我不认为这是因为实际上只有一个单元可用!
更新:我的权限如下所示:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud) 我在android中遇到了远程服务.事情是我在包"abc"中实现了远程服务,我希望其他应用程序能够访问此服务.我摆脱了整个蹩脚的援助,并设计了服务的"界面",通过广播意图工作.到目前为止工作正常......
problem is: how do i get a different
application (different package, different project, maybe even a different developer, ...) to start/stop the service?
package d.e.f;
import a.b.c.*;
public class main extends Activity {
protected ImyService myService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent(ImyService.class.getName());
bindService(intent, sConnection, Context.BIND_AUTO_CREATE);
}
protected ServiceConnection sConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
wlService = ImyService.Stub.asInterface(binder);
ServiceConnected = true;
Toast.makeText(main.this, "service connected", Toast.LENGTH_SHORT).show();
}
public …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我需要存储在android homed sqlite数据库中的双值.因为这些double值代表gps值(lat&lng),所以我真的NEED
是绝对精度,直到逗号后的第9个数字.
现在我有一个这样的表:
CREATE TABLE x REAL lng;
Run Code Online (Sandbox Code Playgroud)
并插入sth(硬编码),如:
INSERT INTO x lng = '1.0';
Run Code Online (Sandbox Code Playgroud)
当从这个表读取lng到一些(java)双变量时,我得到一个像"0.999956837"的值 - 这使得这些值对我来说毫无用处.
有没有办法强制执行我需要的精度,除了将值存储为"文本"字段(什么会使昂贵的演员需要)或将它们存储为整数(意味着我需要在每次写/读操作时乘以/除)?
我目前正在 android 2.1 中编写一些代码,该代码应该测量 GSM 信号的信号强度。我需要的是某种列表,其中包含某种与相应信号强度相匹配的网络 ID...我到目前为止:
public class main extends Activity {
TelephonyManager telManager;
GSMListener gsmListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gsmListener = new GSMListener();
telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(gsmListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
private class GSMListener extends PhoneStateListener {
/* Get the Signal strength from the provider, each time there is an update */
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
Toast.makeText(main.this, "GSM Cinr: " + signalStrength.getGsmSignalStrength(), Toast.LENGTH_SHORT).show();
}
};
}
Run Code Online (Sandbox Code Playgroud)
但此时,我想知道是否有像 wifi 网络的 bssid 这样的网络 ID?GSM …
我正在编写一个显示MapView的应用程序,显示谷歌地图.我使用了http://developer.android.com/resources/tutorials/views/hello-mapview.html中的"hello map view"教程,这项工作到目前为止:地图显示,居中和缩放正确,甚至是OverlayItems我添加正确显示.
但是当我点击我添加的其中一个叠加项时,应用程序崩溃并出现空指针异常:
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): java.lang.NullPointerException
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:753)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:273)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at net.xenonite.wifiloc.act_map$MapItemizedOverlay.onTap(act_map.java:182)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:347)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at com.google.android.maps.MapView.onTouchEvent(MapView.java:647)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.View.dispatchTouchEvent(View.java:3709)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:874)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
07-23 16:24:48.167: ERROR/AndroidRuntime(2530): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) …
Run Code Online (Sandbox Code Playgroud) 我正在为谷歌Android编程,我想知道无线802.11网络的扫描是被动还是主动?我的意思是:设备是否实际发出信标请求信号,WifiManager.startScan()
或者只是监听接入点定期发送的信标?
我想编写一个应用程序,在小部件中显示一些信息,应该不时更新.不时意味着,我使用闹钟定时器来触发peroidic更新.因此,问题intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
是:广播接收器意图为空.
这是我的小部件提供者:
public class MyWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for(int i=0; i<N; i++) {
int widgetId = appWidgetIds[i];
RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent intent = new Intent(context.getApplicationContext(), TrafficService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
rViews.setTextViewText(R.id.TextView01, "" + System.currentTimeMillis());
appWidgetManager.updateAppWidget(widgetId, rViews);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是导致问题的BroadcastReceiver:
public class TimeIntervalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// set new alarm timer (code cut out)
AppWidgetManager …
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我有一个ui-update-thread,可以使我的所有视图保持最新状态.
protected Thread UIUpdateThread = new Thread()
{
@Override
public void run()
{
while(true)
{
query_some_data_from_service(); // gets some "fresh" data from a service
UIUpdateHandler.sendEmptyMessage(0); // will update all ui elements with the new values
sleep(1234);
}
}
};
Run Code Online (Sandbox Code Playgroud)
我在onCreate()中启动此线程
UIUpdateThread.start();
Run Code Online (Sandbox Code Playgroud)
当我离开活动时(例如,因为我切换到另一个活动)我打电话,一切正常#:)
UIUpdateThread.interrupt();
Run Code Online (Sandbox Code Playgroud)
在onStop()内,以防止线程一直运行.如果我不这样做,它会继续运行,即使我关闭应用程序!?!?!!
问题是:当从其他活动返回到此活动时,如何将此线程恢复生机?run()不起作用,在onResume()之类的其他方法中调用初始start()会使应用程序崩溃.
我已经尝试了很多东西,但似乎没有任何工作:(