我写了一个应用程序,需要在某个蓝牙低功耗设备进入范围内时获得通知.如果BLE设备被注意到,我的应用程序只存储一个时间戳.
如WWDC 2012核心蓝牙视频中所述,使用Core Bluetooth时,应用程序可以在后台模式中执行两种操作:
事件背景
事件背景可能是大多数应用程序在与蓝牙低功耗设备交互时将使用的内容.当App处于后台时,此模式不允许与附件直接通信,但是当它想要与应用程序通信时确实提供来自附件的通知.当您的应用程序在后台时,iOS将保持与BTLE附件的连接,并将继续监视通知.当连接的BTLE附件有可用通知时,iOS将通知用户该附件想要与您的应用程序通信,允许用户加载您的应用程序并与附件进行交互.由于许多设备需要节省电力,因此仅在确定时间提供信息将大大延长配件和iPhone 4S的电池寿命.
- 此模式不需要info.plist条目.
会话背景
有时候应用程序必须与附件交互,即使它在后台运行.考虑一个需要实时监控心率的运行应用.这个模型有一个明确的START和STOP.用户在应用程序中运行它们.当运行处于活动状态时,应用程序会读取心率信息,直到运行完成或停止.在App处于后台时,会话后台还允许扫描和连接到BTLE附件.即使应用程序在后台,scanForPeripheralsWithServices或connectPeripheral也会继续调用.CoreBluetooth将继续监控与您正在寻找的服务相匹配的特定外围设备或外围设备,并在找到或连接时致电您的应用代表.请注意,每次BTLE外围设备或iPhone 4S使用其无线电时,它都会耗尽各自的设备可用功率.使用基于会话的后台处理的应用程序开发人员必须注意使用电源.
- 会话后台处理需要在您的Apps info.plist中输入UIBackgroundModes(bluetooth-central)的后台模式.
到目前为止我的Session Backgrounding(使用相应的info.plist条目).该应用程序要求iOS检索所有已知设备,然后将connect命令提供给我正在寻找的设备.连接回调即使在我的应用程序后台运行几分钟后也会出现.
但是:应用程序在 - 比如说 - 一小时后被暂停.这意味着下次我的应用程序被用户启动时,它无法判断是否有任何感兴趣的BLE设备.
所以我的问题是:当某个BLE设备进入后台时,即使在被发送到后台几天后我的应用程序也可以在没有用户交互的情况下得到通知,这样我就可以存储我的时间戳了吗?
我想要的是一个UISlider让用户不仅可以在他开始时滑动thumbRect,而且还可以在其他地方点击的时候滑动.当用户点击滑块但在滑块之外时thumbRect,滑块应跳转到该值,然后仍然保持用户的滑动手势.
到目前为止我尝试过的是在这个建议中实现UIGestureRecognizer的子类.当它thumbRect发生在外面某处的触地时,它就开始了.问题是滑块设置其值但随后进一步滑动手势被忽略,因为触摸识别器已经窃取了触摸.
如何实现滑块,您可以在任何地方点按但仍然可以立即滑动?
编辑:ali59a非常友好地添加了我现在所做的一个例子.这需要再次抬起手指,之后我可以触摸并拖动滑动(水龙头不是我想要的,我需要立即'触摸和滑动').
为了在Core Data中使用,我尝试构建一个NSPredicate对象.minLength并且maxLength是类型int:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %@ AND length <= %@",
minLength, maxLength];
Run Code Online (Sandbox Code Playgroud)
程序在这里崩溃了EXC_BAD_ACCESS.如果我使用%d而不是%@:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %d AND length <= %d",
minLength, maxLength];
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我的问题是我有一大堆来自汽车中使用的不同GPS记录仪的GPS轨迹.当没有关闭这些便宜的设备,即使站着不动,也会记录幻影:

正如您在上图所示,大约一千个点在一种拥挤状态下可视化.现在我想删除所有这些点,以便在抖动开始之前来自左端的红色轨迹结束.我的方法是在轨道中的每个点周围"绘制"两个或三个圆圈,检查这些圆圈中有多少个其他点并检查比率:
(#points / covered area) > threshold?

如果阈值超过一定比例(紫色圆圈),我可以删除其中的所有点.所以:简单的方法,但有很大的缺点,例如计算时间,删除只有通过圆圈的"无辜"曲目,不会检测像图片底部的单点这样的异常值.
我正在寻找一种更好的方法来检测大量的点,如图中所示.它不应该消除误报(可能是5或10分,这些聚合对我来说无关紧要).此外,它不应简化轨道的其余部分!
编辑:给定示例中的结果应如下所示:

我想修改一个当前有一个UITabBarController初始视图控制器的应用程序.
目标是在屏幕的顶部区域中设置一个自定义状态栏,无论选择哪个选项卡,都会始终显示该状态栏.电流UITabBarController可能无法使用屏幕的整个高度:
/----------------------------\
|Custom Status bar (50 px) |
| |
|----------------------------|
| |
|----------------------------| ---
| | |
| | |
|View of the selected tab | |
| | |
| | |
| | |
| | |
| | smaller height of the UITabBarController
| | |
|----------------------------| |
|Tab bar | |
| | |
\----------------------------/ ---
Run Code Online (Sandbox Code Playgroud)
我用的是故事板.Size Inspector即使模拟指标大小设置为"自由形式",我也无法在窗口中设置(设计)大小.
我有一个C#WPF项目,它自动生成每日和每周报告.我想在新报告可用时通知用户,所以我想到了一个类似于iPhone的徽章,其中新消息的数量出现在一个小红圈上: 替代文字http://i46.tinypic.com/so3l2u.png
我想到了三张图片:如果要显示的数字很小,左右两个半圆圈的图像.对于数字很大(123)并且不适合圆圈的情况,中间的第三个图像. 替代文字http://i49.tinypic.com/11lr7mp.png
我想要一个有光泽的效果,所以我想到了图片.有没有人知道如何在没有图片的情况下以编程方式执行此操作?
我正在尝试使用iTextSharp创建一个pdf文件.我的尝试将pdf的内容写入MemoryStream,因此我可以将结果写入文件和数据库BLOB.创建文件,大小约为21kB,当使用Notepad ++打开时,它看起来像一个pdf.但是我的PDF查看器说它已经被破坏了.这是一个小代码片段(只尝试写入文件,而不是数据库):
Document myDocument = new Document();
MemoryStream myMemoryStream = new MemoryStream();
PdfWriter myPDFWriter = PdfWriter.GetInstance(myDocument, myMemoryStream);
myDocument.Open();
// Content of the pdf gets inserted here
using (FileStream fs = File.Create("D:\\...\\aTestFile.pdf"))
{
myMemoryStream.WriteTo(fs);
}
myMemoryStream.Close();
Run Code Online (Sandbox Code Playgroud)
我犯的错误在哪里?
谢谢你,诺伯特
可能重复:
WPF图像资源
我的VS C#项目中有一些图像被声明为嵌入式资源.我正在使用以下命令在.cs文件中访问它们:
Stream logoStream = GetType().Assembly.GetManifestResourceStream("ProjNS.Image.logo.png");
Bitmap logo = new Bitmap(logoStream);
Run Code Online (Sandbox Code Playgroud)
但是如何在.xaml文件中访问我的徽标?
我的iPhone应用程序有一个Words具有属性的实体word,length和language.两者都被编入索引:

我将cdatamodel和数据库复制到一个单独的导入器应用程序,在该应用程序中预先填充了大约400,000个不同语言的单词.我通过查看SQLite文件验证了导入,然后将预填充的数据库复制回iPhone项目.
首先,我认为(简单)谓词是问题所在.但即使从获取请求中删除谓词,也需要很长时间才能执行:
2011-09-01 09:26:38.945 MyApp[3474:3c07] Start
2011-09-01 09:26:58.120 MyApp[3474:3c07] End
Run Code Online (Sandbox Code Playgroud)
这是我的代码的样子:
// Get word
NSLog(@"Start");
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Words" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
//... error handling code
}
[fetchRequest release];
NSLog(@"End");
return fetchedObjects;
Run Code Online (Sandbox Code Playgroud)
数据库中的条目数是Core Data的问题吗?
编辑:正如gcbrueckmann和jrturton指出的那样,这是一个很好的设置点fetchBatchSize.但是获取时间仍然不尽如人意:
谓词集2秒:
NSPredicate*predicate = [NSPredicate predicateWithFormat:@"length ==%d AND language BEGINSWITH%@",wordLength,lng]; [fetchRequest setPredicate:predicate]; …
我正在使用Swagger记录REST Web API .我已经下载了petstore示例.它由resources.json哪些引用pet.json和user.json:
{
"apiVersion":"0.2",
"swaggerVersion":"1.0",
"basePath":"http://petstore.swagger.wordnik.com/api",
"apis":
[
{
"path":"/pet.{format}",
"description":"Operations about pets"
},
{
"path":"/user.{format}",
"description":"Operations about user"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但即使将原始文件上传到我的Web服务器后,Swagger UI也告诉我:
Unable to fetch API Listing. Tried the following urls:
http://www.myserver.org/resources.json
http://www.myserver.org
http://www.myserver.org/resources.json
http://www.myserver.org/resources
Run Code Online (Sandbox Code Playgroud)
你能说出是什么原因导致Swagger找不到我的json文件吗?
c# ×3
iphone ×3
ios ×2
algorithm ×1
core-data ×1
filestream ×1
gps ×1
itextsharp ×1
memorystream ×1
objective-c ×1
pdf ×1
performance ×1
size ×1
styles ×1
swagger ×1
tracking ×1
uislider ×1
uistoryboard ×1
wpf ×1
xaml ×1