小编xen*_*ite的帖子

如何在android中扫描范围内的可用蓝牙设备?

我需要使用谷歌android 2.1获取该地区可用的蓝牙设备列表.

事实是,我不仅需要这些设备的列表,我需要为每个设备找到一些唯一的ID,我需要一个指示器,接收信号的"好"程度(如android.wifi.ScanResult中的"级别") )... 我怎么做?

android bluetooth scanning

19
推荐指数
2
解决办法
8万
查看次数

如何在android中校准方向传感器?

我正在Google Android 2.1中编写一个应用程序,需要知道设备(HTC Hero)面向哪个方向(n/w/s/e).传感器及其听众工作得很好,但我从传感器获得的值非常糟糕.例如它告诉我当设备面向SW时我会面向北方......

这似乎是Android设备的已知问题.我在网上找到的"解决方案"如下所示:

  • 摇动设备
  • 像八个一样移动设备
  • 点击设备背面

这被认为是触发传感器重新校准的原因.而且:"四处走动"的东西对我有用......但我觉得这不是很专业......

那么 - 如何从SDK触发方向传感器的重新校准?我需要对传感器进行适当的校准,而没有任何花哨的东西会让这个应用程序的用户看起来像完全白痴,而他们"手动"重新校准他们的手机......

有没有办法做到这个"正确"?

编辑:

或者:有没有办法确定PROGRAMMATICY,如果设备是否正确校准?作为后备选项可以说......然后我可以警告用户该设备需要"手动"重新校准.

java android android-sensors

16
推荐指数
1
解决办法
2万
查看次数

android:NeighboringCellInfo总是空的!为什么?

我正在尝试获取有关我的手机可以"看到"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 gsm cell

10
推荐指数
1
解决办法
5556
查看次数

我如何启动(和绑定)在另一个应用程序(不同的包)中实现的android中的远程服务?

我在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)

service android

8
推荐指数
1
解决办法
1万
查看次数

在SQLite中存储double值:如何确保精度?

我有一个问题,我需要存储在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"的值 - 这使得这些值对我来说毫无用处.

有没有办法强制执行我需要的精度,除了将值存储为"文本"字段(什么会使昂贵的演员需要)或将它们存储为整数(意味着我需要在每次写/读操作时乘以/除)?

database sqlite precision double android

7
推荐指数
1
解决办法
2万
查看次数

如何获取可用的 GSM 网络列表?

我目前正在 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 …

android gsm signal-strength

5
推荐指数
1
解决办法
4901
查看次数

GoogleMaps MapView在Android中崩溃onTap?

我正在编写一个显示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 google-maps google-maps-markers

5
推荐指数
2
解决办法
6162
查看次数

Android设备是否*主动*扫描WiFi网络?

我正在为谷歌Android编程,我想知道无线802.11网络的扫描是被动还是主动?我的意思是:设备是否实际发出信标请求信号,WifiManager.startScan()或者只是监听接入点定期发送的信标?

android wifi network-scan

5
推荐指数
1
解决办法
2679
查看次数

无法从BroadcastReceiver更新Android小部件

我想编写一个应用程序,在小部件中显示一些信息,应该不时更新.不时意味着,我使用闹钟定时器来触发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)

java android widget

4
推荐指数
1
解决办法
4472
查看次数

如何重启android中的线程?

在我的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()会使应用程序崩溃.

我已经尝试了很多东西,但似乎没有任何工作:(

java multithreading android

3
推荐指数
1
解决办法
6441
查看次数