2014-07-11 3 views
2

Android Beam을 통한 콘텐츠 전달을 지원하는 응용 프로그램을 개발 중입니다. (정확하고 Bluetooth를 사용하여 NFC에서 시작된 콘텐츠 전송을 지원합니다.) 나는 Android Beam : Beam 내용 다운로드 방법

nfcAdapter.setBeamPushUrisCallback(new NfcAdapter.CreateBeamUrisCallback() { 

       @Override 
       public Uri[] createBeamUris(NfcEvent event) { 
        if (singleItemToTransfer()) { 
         if (item.getLocalPath() != null) { 
          File file = new File(item.getLocalPath()); 
          return new Uri[] { Uri.fromFile(file) }; 
         } else { 
          // Download the content & pass the handle 
          // for the content being downloaded 
         } 
        } 
       } 

}, this); 

이제 문제는 안드로이드 프레임 워크는 현재 사용할 수없는 내용이 전송 될 경우, 시나리오를 처리하는 방법이며 아직 다운로드 할 필요가 NfcAdapter 클래스, nameley를 통해 사용할 수있는 잘 알려진 API를 사용하고 있습니다 먼저 전송 된 다음 예를 들어 사진의 미리보기 만 사용할 수 있으며 미리보기를 선택하면 응용 프로그램이 먼저 콘텐츠를 다운 라이트 한 다음 Android Beam (예 : 블루투스)을 통해 전송합니다. 나는 arround을 검색하여 현재 Android DownloadManager에서 다운로드중인 파일을 처리 할 수있는 방법이 있다는 것을 알아 냈습니다. 예를 들어 여기에 흥미로운 post이 있습니다. 기본적으로 DownloadManager 클래스는 http 다운로드 목록과 관련 상태를 저장합니다. 다운로드가 '실행 중', '보류 중', '일시 중지'등을 기준으로 다운로드를 필터링하는 것이 좋습니다. 이 목록은 커서로 읽을 수 있으며 결과의 열 중 하나는 파일 다운로드 위치의 URL 인 'COLUMN_URI'입니다.

위의 해결 방법을 고려하면 콘텐츠가 클라우드에 있다면 어떨까요? Google 드라이브 란 무엇입니까? 더 많은 내용을 검색하고 많은 게시물 (예 : here)을 발견했습니다. 분명히, 다운로드 부분은 아직 자리에 있습니다. 콘텐츠는 전송되기 전에 먼저 다운로드해야합니다.

위의 질문 외에도, 콘텐츠를 다운로드 한 다음 다운로드가 완료된 파일의 URI를 반환하는 경우 Android Beam이 어떻게 작동하는지 궁금했습니다. 테스트를 위해 Thread.sleep (_some_time_)과 같은 모의 코드를 만들었습니다. 그런 다음 createBeamUris() 호출 내에서 실제 URI를 전달했습니다. 이 경우 Android Beam은 사용자가 현장에서 다른 기기를 찾은 후 위에 소개 된 시간 동안 기다린 다음 "Tap to Beam"을 발급합니다. 일반적으로 매우 끔찍한 사용자 경험을 제공합니다 (예 : 다른 장치의 화면이 잠기고 NFC가 꺼짐). 그 후, 다운로드되는 파일에 대한 URI를 전달한 다음 다운로드하는 동안 콘텐츠를 전송할 것입니다. 어떻게 처리 할지는 모르겠다. Android Beam의 작동 방식을 수정하는 것이 유일한 옵션 인 것 같습니다. 어떤 힌트도 높이 평가됩니다!

내가 뭔가를 놓친 것으로 생각되면 친절하게 알려 주시면 해당 게시물을 업데이트 할 것입니다.

답변

0

필자는 결국 Android 프레임 워크를 변경하여 작동하도록 결정했습니다.

관련 문제