- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个跨平台 (Xamrin) 应用程序,它可以进行一些经典的蓝牙通信,并且在 iOS8 上运行得非常好。但是,在 iOS9 上重新构建并运行它之后,我无法让 NSInputStream 拥有“HasBytesAvailable”= true。注:I followed all the instructions from Xamarin's website.
我尝试将委托(delegate)分配给 InputStream 并等待 NSRunLoop,但流似乎从来没有可用字节。该事件仅在输入流打开时触发(在 iOS9 上)(在 iOS8 上按预期触发)。
这是在 iOS8 上成功读取的代码片段(委托(delegate)方法):
EAsession.InputStream.Delegate = new Foo();
EAsession.InputStream.Schedule(NSRunLoop.Current,NSRunLoop.NSDefaultRunLoopMode);
EAsession.InputStream.Open();
(NSRunLoop.Current).RunUntil(NSDate.FromTimeIntervalSinceNow(2));
其中 Foo 是一个类,它实现了:NSObject、INSStreamDelegate
public class Foo :NSObject, INSStreamDelegate
{
[Export("stream:handleEvent:")]
public void HandleEvent(Foundation.NSStream theStream, Foundation.NSStreamEvent streamEvent)
{
//Code to read bytes here
}
为了确保确实有字节发送到 iPhone5,我修改了外部蓝牙设备以仅回显接收到的任何字节。
在 iOS8 上使用任一方法(委托(delegate)或等待 NSRunLoop),回显立即到达。但是,当我将目标设备更改为 iOS9 时,我可以永远等待,而 HasBytesAvailable 将始终为 false。
我什至尝试读取,不管 HasBytesAvailable 是否为假,但没有读取任何内容(我想这没什么大惊喜)。
此外,我尝试使用 Xcode6.4 和 Xcode 7 进行构建,结果相同。
目前我没有想法,所以任何帮助将不胜感激!
提前致谢!
编辑:
我联系了 Xamarin,我正在为他们编写一个测试应用程序来测试它是 Apple 问题还是 Xamarin 问题。
另请参阅 this link 中的评论关于蓝牙...也许相关?
最佳答案
所以我终于解决了,
我不完全确定最终问题是什么,因为我做了一些事情:
代码的变化是,我不再在接收和发送方法中分别处理打开、调度和委托(delegate)分配,而是在同一个地方处理。也就是说,在创建 EASession 时,我像这样分配了以上所有内容:
s = new EASession(device, protocol);
output_stream = s.OutputStream;
input_stream = s.InputStream;
output_stream.Delegate=this;
output_stream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode);
output_stream.Open();
input_stream.Delegate = this;
input_stream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode);
input_stream.Open();
目前我没有取消输入和输出流的调度,我不确定这是正确的做法。当我从工作转向一个漂亮的工作代码时,我会尽量保持更新......
与 Bluecode 描述的不同,我确实需要使用我的输入流,而且我总是打开它;所以我不确定这是否是同一个问题。我仍然不确定问题的解决方案是什么,因为它可以是上述一种方法,也可以是上述方法的组合。稍后当我有更多时间查看哪个是单一解决方案时,我可能会对此进行更多实验?如果有的话。
希望这对任何人都有帮助。干杯
关于ios8 - NSInputStream 从不在 iOS9(经典蓝牙)上使用 HasBytesAvailable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753508/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
假设我的 ASPX 页面没有内联 C# 代码块。 所以,我可以安全地设置 ...在我的 web.config 文件中,不用担心编译错误。 就性能而言,使用以下设置是否会有任何损失? 即“自动”检测
应用程序.js var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor: 'black', l
基本上,我正在为实现多级优先级队列的 xv6 内核实现一个调度程序。我有一个严重的问题,我不明白,我类(class)的助教不明白,我已经错过了这个项目的最后期限,所以现在帮助我不会给我任何加分 - 但
我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的
当比较两种不同的算法实现时(因此,不关心它们的绝对性能,而只关心相对性能)我是否最好强制 Java 只运行解释代码? 也就是说,打开 -Xint 标志会更好吗? 最佳答案 我不认为禁用 JIT 会更好
class A{ const size_t number; public: A(size_t number): number(number) {} void f(){
问题 寻找在以下之间切换的方法: 总是 从不 仅在静默模式下 仅当不处于静默模式时 这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。 通过手机导航很容易更改(顺便说一句,我的手机是
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我是一名优秀的程序员,十分优秀!