首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取Android上显示设备的PCI信息

如何获取Android上显示设备的PCI信息
EN

Stack Overflow用户
提问于 2015-02-18 16:09:33
回答 1查看 1.9K关注 0票数 1

早上好,伙计们!

我正在将一个桌面OpenGL c++应用程序移植到安卓上。这个应用程序已经相当跨平台了。它需要在所有平台上进行可靠的呈现,因此它通过启用或禁用基于主机操作系统和卡的PCI信息的某些代码路径来解释图形驱动程序实现上的差异。具体来说,它会切换设备、供应商和修订ID。

我需要从Android内部获取这些PCI ID。

我更愿意通过本机代码编程来实现,但是JNI路径或者甚至解析外部命令的输出都是合理的选择。

我一直在四处张望,但找不到可靠的东西。任何涉及Android和PCI或ID的google搜索,即使经过大量过滤,都会返回Android设备的ID、数据库或所有已知PCI设备ID的列表,或者PCI安全标准委员会。与实际PCI头无关。也许我只是需要更多的谷歌?

Android上没有lspci。在亚行shell中,我发现没有可访问的/sys文件系统,并且/proc/bus/pci/设备是空的。我最近看到的是Tegra上的/proc/device-tree/nvidia-boardids,它打印出一个相当神秘的字符串,我很确定它包含了这些ID。这可能适用于拥有nVidia卡的设备,但这只是运行卡的设备的子集。

作为最后的手段,我们可能可以使用从glGetString返回的信息,但这比PCI ID的变化要大得多。我强烈希望避开这条路线。

这个应用程序是为谷歌播放发行,所以我绝对不能根植这些设备。

有什么想法吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-02-13 11:22:32

以下是java类

代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.CellInfo;
import android.telephony.CellInfoLte;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Window;
import android.widget.TextView;
import java.util.List;

public class MainActivity extends AppCompatActivity {

phoneStateListener listener;
TelephonyManager telephonyManager;
TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    listener = new phoneStateListener();
    telephonyManager.listen(listener,PhoneStateListener.LISTEN_CELL_INFO);
    tv = (TextView) findViewById(R.id.tv);
}

@Override
protected void onResume() {
    super.onResume();
}

public class phoneStateListener extends PhoneStateListener{
    public phoneStateListener(){

    }

    @Override
    public void onCellInfoChanged(List<CellInfo> cellInfo) {
        super.onCellInfoChanged(cellInfo);
        for(CellInfo m: cellInfo)
            if (m instanceof CellInfoLte){
                CellInfoLte cellInfoLte=(CellInfoLte) m;
                int pciNum = cellInfoLte.getCellIdentity().getPci();
                Log.d("onCellInfoChanged", "CellInfoLte--" + m);
                tv.setText("PCINUMBER: "+pciNum);
            }
    }
}

@Override
protected void onStop() {
    super.onStop();
    telephonyManager = null;
}
}

不要忘记使用权限android.permission.READ_PHONE_STATE android.permission.ACCESS_COARSE_LOCATION

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28588212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档