有没有办法使用OBEX使用android bluetooth API发送文件?
我需要将文件发送到仅支持OBEX OPP的打印机.
我可以使用android意图ACTION_SEND将文件发送到打印机没有问题,但我需要以编程方式发送它..
我可以使用方法createRfcommSocketToServiceRecord()使用OBEX OPP UUID(1105)连接到蓝牙打印机,但是我应该遵循obex规范使用OBEX发送文件..它不像将字节写入输出套接字那么简单. .
但是如果意图ACTION_SEND可以处理这个问题,为什么开发人员没有任何API发送文件?
我还检查了一些像BlueCove这样的第三方库,但我仍然没有让它工作..(Nexus One和Galaxy Tab抛出异常,说本机库bluecove_armv71不可用..而且LG Optimus One说bluecove_armv61不是不可用..)
我被卡住了,有什么想法吗?
工作解决方案
对于任何试图将文件发送到蓝牙设备而没有运气的人,我使用内容提供商提供了一个有效的解决方案(感谢KPBird):
从这里抓取java类BluetoothShare
以下代码将SD卡上的文件发送到蓝牙设备:
BluetoothDevice device;
String filePath = Environment.getExternalStorageDirectory().toString() + "/file.jpg";
ContentValues values = new ContentValues();
values.put(BluetoothShare.URI, Uri.fromFile(new File(filePath)).toString());
values.put(BluetoothShare.DESTINATION, device.getAddress());
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND);
Long ts = System.currentTimeMillis();
values.put(BluetoothShare.TIMESTAMP, ts);
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud)
UPDATE
有些人遇到上述解决方案的问题,已经在以下设备上进行了测试:
适用于:
有问题:
我在iOS上遇到了一个问题,我为它做了一个小提琴:
如果事件监听器被添加到文档中以用于任何触摸事件(touchstart/touchmove/touchend),如下所示:
function onTouch( e ){};
document.addEventListener( 'touchstart', onTouch, false );
Run Code Online (Sandbox Code Playgroud)
这导致输入字段在iOS上具有以下行为:
我在iPad和iPhone(模拟器和实际设备)上在iOS 5,5.1和6上遇到并测试了这个问题.
唯一的修复似乎是删除事件监听器以恢复输入字段的正确行为(或实际上从不添加监听器):
document.removeEventListener( 'touchstart', onTouch);
Run Code Online (Sandbox Code Playgroud)
我还注意到,如果页面上有多个iframe,并且其中一个iframe将监听器添加到其文档中,它也会破坏其他iframe的输入字段.
小提琴在我的Android手机上表现正常.
任何想法为什么会发生这种情况?或者如何为触摸事件提供全局自定义事件处理程序,而不会破坏iOS上的输入?
我在理解如何基于以下模型构建视图模型时遇到问题
(我将模型简化为更清晰)
public class Hit
{
public bool On { get; set;}
public Track Track { get; set; }
}
public class Track
{
public ObservableCollection<Hit> Hits { get; set; }
public LinearGradientBrush Color { get; set; }
public Pattern Pattern { get; set; }
}
public class Pattern
{
public string Name { get; set; }
public ObservableCollection<Tracks> Tracks { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,如何构建ViewModels ..
我需要通过模型保持原始关系,beacaus我在Pattern上有一个Serialize()方法,将它序列化为XML文件..(带有相关的Tracks和Hits)
为了能够将模式绑定到用户控件和它的嵌套模板,我还应该有一个带有ObservableCollection <TrackViewModel>的PatternViewModel,对于TrackViewModel和HitViewModel来说也是如此...我需要在查看不属于业务对象的模型(颜色和更多..)
在视图模型上复制模型的所有关系对我来说似乎不是一件好事......并且在编写视图模型时跟踪所有这些关系也更容易出错.
谁有更好的方法/解决方案?
我正在根据ComboBox选择更新图像控件的Source.
更新图像源后,我需要读取图像的ActualWidth和ActualHeight
我在第一次使用Image控件的Loaded事件打开对话框时工作,但是每次更新Source时这个事件都没有明显提升.
有没有办法在每次Source更新后获得加载到控件中的图像的实际大小?
我需要解析一个包含"code"标签的html文档
我得到这样的代码块:
soup = BeautifulSoup(str(content))
code_blocks = soup.findAll('code')
Run Code Online (Sandbox Code Playgroud)
问题是,如果我有这样的代码标签:
<code class="csharp">
List<Person> persons = new List<Person>();
</code>
Run Code Online (Sandbox Code Playgroud)
BeautifulSoup更喜欢关闭嵌套标签并将代码块转换为:
<code class="csharp">
List<person> persons = new List</person><person>();
</person>
</code>
Run Code Online (Sandbox Code Playgroud)
有没有办法使用BeautifulSoup将代码标签的内容提取为文本而不让它修复IT认为的html标记错误?