我想获得有关设备的信息,看看它是智能手机还是平板电脑.我该怎么做?
我想根据设备类型显示来自资源的不同网页:
String s="Debug-infos:";
s += "\n OS Version: " + System.getProperty("os.version") + "(" + android.os.Build.VERSION.INCREMENTAL + ")";
s += "\n OS API Level: " + android.os.Build.VERSION.SDK;
s += "\n Device: " + android.os.Build.DEVICE;
s += "\n Model (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";
Run Code Online (Sandbox Code Playgroud)
但是,对我来说似乎没用.
这个解决方案现在适用于我:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
if (SharedCode.width > 1023 || SharedCode.height > 1023){
//code for big screen (like tablet)
}else{ …Run Code Online (Sandbox Code Playgroud) 我到处寻找.我们正在使用Motorola Zoom来尝试我们的平板电脑网站测试.问题是Android Useragent是一般的Useragent,平板电脑Android和移动Android之间没有区别.我不想只针对像Xoom Useragent这样的特定设备,因为Android很可能会在不久的将来出现在多个平板设备上.
我们正在使用Umbraco CMS,我们已经考虑使用51Degrees.mobi解决方案,目前这不适合我们的需求.或许在将来.我知道51Degrees和Umbraco的一些人将要进行一些整合到Umbraco,但最终的项目可能不会出现几个月.
因此,为什么我们要检测Android平板电脑的Useragent String,并且不要像现在这样直接访问我们的移动网站.
如果有人知道如何检测和Android平板电脑一般,不是具体的设备将是非常有帮助的.
我刚刚开始使用Twitter Bootstrap API来完成我即将推出的项目.主导航包含3个主要元素:
我在移动设备上查看网站时使用折叠插件折叠网站导航和搜索表单.移动视图有2个按钮,单击此按钮可打开/关闭搜索表单或主导航.
但是,如果我关闭搜索表单然后将浏览器调整为桌面视图,搜索表单仍然隐藏在此视图中?
我已经阅读过有关使用诸如visible-mobile等类的内容,但这些类似乎与崩溃插件冲突.我也意识到我可能会编写自己的CSS黑客来解决这个问题,但我想我会问是否有更简单的解决方案.
Bootstrap有显示,显示,隐藏和隐藏的事件,所以我想也许我可以写一些自定义JS,它会在每个特定的设备视图中显示或隐藏这些项目.但是我不知道如何检测我当时正在使用的设备.
思考?
提前致谢
我有两个适用于Android平板电脑和Android手机的应用.对于平板电脑的应用程序我设置android:minSdkVersion="11".但是现在像Galaxy S3这样的Android手机拥有Android 4.0.4版本,因此S3用户可以从Google Play商店下载我的平板电脑应用程序.我想警告手机用户在安装平板电脑应用程序时下载手机应用程序.反之亦然平板电脑用户在运行手机应用时下载平板电脑应用.
有没有简单的方法来检测设备类型?
我找到了这个链接的解决方案.
在您的清单文件中,您可以为手机和平板电脑声明屏幕功能,然后Google Play会决定手机和平板电脑的下载权限.
我想使用Modernizr来检测用户是在桌面,平板电脑还是移动设备上查看网站.
我最初的第一个想法显然是检查屏幕尺寸应该足够用于移动设备以及更大的桌面.对于屏幕尺寸也可能与小型桌面屏幕(1024 x 768)相同的平板电脑设备,我也会测试触摸事件.
在这个时候,我想专注于移动/平板电脑设备,就像jQuery mobile所说的那样,A级.我不打算使用任何特定的移动设备功能,只需检测桌面,平板电脑或移动设备,并根据测试结果附加CSS类,为每个设备提供量身定制的UI.
你认为这足以实现我想要的,或者你认为我应该测试其他功能吗?提前谢谢了.
我期待在PHP中进行一些设备检测,我正在研究一些选项.现在看起来最好的是WURFL http://wurfl.sourceforge.net/.但由于它的非开源许可,我对它非常谨慎.我也想知道它是否相关,因为文档网站看起来有点过时了.
其他选项如WURFL包括http://deviceatlas.com/和http://51degrees.mobi/,但这些选项 都不接近开源.
然后是PHP专用解决方案,如 http : //detectmobilebrowsers.mobi,http://code.google.com/p/php-mobile-detect/和http://detectmobilebrowsers.com/但这些都使用某种形式的看起来丑陋的正则表达式.
对我来说,理想的解决方案是开源XML文件或数据库,我可以在本地存储,并且可以根据需要进行更新.
我在做梦吗?您更喜欢哪种解决方案来检测移动用户?
我目前正在我的网站上使用JavaScript进行移动设备检测,这样我就可以为移动或桌面用户提供不同的内容.
目前我使用window.devicePixelRatio并screen.width计算用户是否在移动设备上,如下:
var isMobileScreenWidth = ((screen.width / window.devicePixelRatio) < 768)
Run Code Online (Sandbox Code Playgroud)
768px 是我们定义移动或桌面的点,所以767及以下是移动,768及以上是桌面.
这很好用,但我最近遇到了Firefox的一个问题,当Firefox放大和缩小时会改变它window.devicePixelRatio,所以:
zoom = 30%, window.devicePixelRatio = 0.3
zoom = 100%, window.devicePixelRatio = 1.0
zoom = 300%, window.devicePixelRatio = 3.0
Run Code Online (Sandbox Code Playgroud)
现在这给我带来了一个问题,因为任何浏览器放大Firefox浏览器的用户都会获得该网站的移动版本.
我想知道是否有人知道一种不同的或更好的方法来获得与桌面浏览器分开的像素密度.
我也使用少量的用户代理检测但是因为跟上不断变化的移动用户代理列表是一项巨大的工作,所以我不可能同时依赖于屏幕分辨率和用户代理时间.
如果有人对此有任何想法,可以帮助那将是非常棒的.
更新:
我刚碰到过这个:
window.screen.availWidth / document.documentElement.clientWidth
Run Code Online (Sandbox Code Playgroud)
这篇文章建议使用这一快速数学:
window.devicePixelRatio在IE 10 Mobile中不起作用?
我测试了它并且它在Firefox中工作,并解决了我的问题,但遗憾的是现在导致Chrome出现问题,因此:
Chrome zoom = 100%,
window.devicePixelRatio = 1.0,
window.screen.availWidth / document.documentElement.clientWidth = 3.0
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到适合一切的可靠解决方案.
我目前正在寻找一些用于移动设备PHP检测的代码,这可能非常简单.
现在我只有一个问题 - 我希望能够在我的MVC框架中为平板电脑,手机和网页制作独特的视图文件.所以我需要将平板电脑与其他移动设备分开.
目前这是我正在使用的代码:
public function isMobile()
{
if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT']))
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
但这还不够 - 唯一的检查是设备是移动设备 - 如果不是它是标准告诉框架,我们在计算机上.最后一部分还可以 - 但是我想在实际的移动设备中拆分移动设备 - 以及应该是平板电脑的分组.
我希望,我已经明确表达了我的愿望,并且我希望,你有一些好的方法可以实现这一目标.
提前致谢.
所以我在我的网站上提供H.264 .mp4视频.我正在使用开源HTML5视频播放器http://mediaelementjs.com/.一些访问者正在从Safari for iPhone查看.iPhone 4仅支持高达720p的视频播放,因此如果我将视频设置为小于此值,则可以使用4和4S.但4S支持高达1080p的视频.那么我如何为4S提供更大的视频,为4提供更小的视频呢?我试过这个:
<video width="640" height="400" id="player" controls="controls" preload="auto">
<source src="https://s3.amazonaws.com/my-big-1080p-video.mp4" type="video/mp4">
<source src="https://s3.amazonaws.com/my-small-720p-video.mp4" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
但它没有用.iPhone 4不够智能,无法尝试第二个来源.如何让我的网站为不同的设备提供正确的视频?
我有一个为ios和android设备部署的流星应用程序,我希望某些代码只在ios设备上运行,而不是在android上运行.我知道我可以使用navigator.userAgent检测设备但这只有在我的应用程序在浏览器上运行时才有效.
//如果是浏览器,则可以正常工作
navigator.userAgent.toLowerCase().indexOf("android") > -1;
Run Code Online (Sandbox Code Playgroud)
但有没有任何可能的方法来检测设备,如果我使用流星线插件为Android创建了捆绑,所以它的工作原理就像一个本机应用程序.
device-detection ×10
android ×4
mobile ×4
javascript ×3
cordova ×1
desktop ×1
html ×1
iphone ×1
meteor ×1
modernizr ×1
php ×1
pixel-ratio ×1
tablet ×1
wurfl ×1