Плагин PhoneGap Android Torch не работает

Плагин PhoneGap Torch

Я пытаюсь заставить работать плагин torch для phonegap/android. Я использовал этот код Github Torch Plugin. ошибки, и я не знаю, где может быть возможная ошибка. Я использую библиотеку cordova-2.0.0.

Это мой index.html

<script type="text/javascript" src="Torch.js">
</script> <script type="text/javascript" src="TorchFunctions.js"> </script> </body> </html>

Это TorchFunctions.js

    window.plugins.Torch.toggle( 
    function() { console.log( "toggle" ) }                          
,   function() { console.log( "error" ) }                           
);

Я отлаживаю это на Samsung Galaxy SIII. Я читал, что у меня могут быть проблемы с устройствами Samsung - это правда? Если да, то может кто-нибудь что-нибудь подсказать? Возможно, плагин не актуален. Кто-нибудь работал с плагином в последнее время?


person AppRoyale    schedule 24.09.2012    source источник


Ответы (3)


Ты пытался:

window.plugins.Torch.turnOn( 
    function() { console.log( "turnOn" ) }                          // success
,   function() { console.log( "error" ) }                           // error
);

В противном случае я могу сказать вам, что у меня проблемы с моим S3 и другими телефонами Samsung. В нескольких моих проектах я использую передний светодиод, который тоже не работает на 100%. Возможно, будет лучше, если вы сначала протестируете его на устройстве, отличном от Samsung, если у вас есть такая возможность, и только после этого при необходимости адаптируете код.

Также убедитесь, что вы выполнили все остальные шаги на https://github.com/phonegap/phonegap-plugins/blob/master/Android/Torch/README.md

Убедитесь также, что вы скопировали файл js ранее в корень вашего приложения phonegap или укажите правильный путь в html.

  <script src="/folderWithJscript/Torch.js"></script>

Объявление должно быть в заголовке вашего html-файла, например:

 <html>
 <head>

 <script src="Torch.js"></script>

 </head>
 <body></body></html>

Чтобы вызвать функцию с помощью кнопки/связать ее с вашим html, это будет что-то вроде:

<a href="#torch" onclick="window.plugins.Torch.turnOn()">Torch on</a>

Хотя это всего лишь предположение. Пожалуйста, проверьте документацию для остальных.

Хранение вашей функции Torch отдельно внутри вашего TorchFunctions.js тоже прекрасно. Вам просто нужно снова включить этот скрипт в заголовок html!

Кроме того, вы должны создать внутри своего проекта Android папку с именем res, если ее еще нет, затем другую папку с именем xml с файлом с именем plugins.xml. Добавьте строку плагина в res/xml/plugins.xml.

<plugin name="Torch" value="nl.debree.phonegap.plugin.torch.TorchPlugin" />
person SunnySonic    schedule 24.09.2012
comment
@Andre: скажем, ваш html-файл называется index.html. Файл Torch.js должен находиться в той же папке, если вы объявляете ‹script src=Torch.js›‹/script› Также вы должны добавить это объявление в заголовок своей веб-страницы. См. мое редактирование выше. - person SunnySonic; 24.09.2012
comment
как вы тестируете свое телефонное приложение? вы используете eclipse и завернули все в проект Android? Если вы тестируете его только в самом браузере на своем компьютере или телефоне, он не будет работать. - person SunnySonic; 24.09.2012
comment
Я использую Eclipse с Android SDK. К сожалению, у меня есть только мой Galaxy S3. Я думаю, что AVD также не будет имитировать фонарик. Конечно, это не будет работать в моем браузере. ;) Кроме того, я предполагаю, что мне не нужна ссылка на Torch в Torchfunctions.js? Потому что, когда я делаю это: ‹a href=TorchFunctions.js onclick=window.plugins.Torch.turnOn()›Torch on‹/a›Как TorchFunctions, который является window.plugins.Torch.turnOn( function() { console .log(turnOn) } // успех, function() { console.log(ошибка) }); Знать, что делать? - person AppRoyale; 24.09.2012
comment
вы можете сделать только один за раз. Либо вы вызываете функцию напрямую, либо через файл javascript, который будет вашим TorchFunctions.js. - person SunnySonic; 24.09.2012
comment
Что касается plugins.xml. Если вы используете eclipse, вы видите свой проект в проводнике пакетов. под вашим проектом вы найдете разные папки. Например, src, bin, res. Внутри папки res вам нужно будет создать еще одну папку с именем xml. Внутри папки xml вам нужно будет создать файл с именем plugins.xml. Внутри этого файла вам нужно будет добавить: ‹plugin name=Torch value=nl.debree.phonegap.plugin.torch.TorchPlugin /› Только после того, как этот файл будет создан, вы сможете продолжить тестирование. без него это не будет работать, потому что приложение не распознает ваш плагин phonegap. - person SunnySonic; 24.09.2012
comment
Да, я получил этот файл. Мой вопрос заключался в том, нужно ли мне работать со ссылкой на этот xml/plugin или все в порядке, если он просто находится в папке? Ошибка должна быть где-то еще? Если у вас есть какое-либо устройство, отличное от Samsung, я был бы признателен, если бы вы установили этот плагин в простую кнопку или что-то в этом роде. Полагаю, это занимает 2 минуты. Это было бы очень здорово. - person AppRoyale; 24.09.2012
comment
Что ж, это займет гораздо больше времени, но позвольте мне попробовать это для вас. - person SunnySonic; 24.09.2012
comment
Что вам не хватает, так это то, что TorchPlugin.java должен быть скопирован в пакет в /src/nl/debree/phonegap/plugin/torch/, как указано в файле readme на их веб-странице. Попробую это для вас и вернусь к вам. - person SunnySonic; 24.09.2012
comment
Мне жаль сообщать вам, но я не мог заставить его работать и на моем s3. В противном случае у меня есть только htc flyer без вспышки, которую я не могу использовать для тестирования такого типа, к сожалению. В этой ссылке указано, что это не всегда работает. Это также может быть связано с тем, что плагин слишком старый и работает только со старой версией phonegap. github.com/phonegap/phonegap-plugins/issues/720 Вы должны прибегнуть к стандартному программированию для Android, чтобы получить желаемую функциональность. - person SunnySonic; 24.09.2012
comment
вы можете попробовать снова просмотреть файл readme, и вам также нужно будет добавить разрешения ‹uses-permission android:name=android.permission.CAMERA /› ‹uses-feature android:name=android.hardware.camera /› ‹uses-permission android:name=android.permission.FLASHLIGHT/› в манифест. - person SunnySonic; 24.09.2012
comment
проверьте эту ссылку: github.com/phonegap/phonegap-plugins/pull/687 возможно, вам следует попробовать все это с phonegap/cordova 1.9 вместо самой новой. - person SunnySonic; 24.09.2012
comment
Проблема в том, что я хочу протестировать приложения html5/javascript. Можно ли сделать это и при этом реализовать некоторый нативный код? Если да, то не могли бы вы дать небольшое пояснение? Спасибо. Я тебя люблю. - person AppRoyale; 25.09.2012
comment
хе-хе. да. Вы можете реализовать нативный код. Либо с помощью плагинов, подобных этому, либо так, как я делаю в одном из моих приложений телефонной связи, с помощью меню параметров Android, которое появляется при нажатии / касании кнопки параметров на вашем телефоне. Вот руководство: mobile.tutsplus.com/tutorials /андроид/ - person SunnySonic; 25.09.2012
comment
Спасибо за ваши усилия. Я сделал уже несколько нативных приложений для Android. Меня очень интересует, как вы можете использовать внешний вид html/css и сочетать его с действиями Android. Вы уже сделали это? - person AppRoyale; 25.09.2012
comment
да. это то, что я говорю. phonegap всегда запускается внутри веб-просмотра. помимо этого веб-просмотра вы можете поставить все, что угодно. например, меню параметров или панель действий или даже другие вещи. (проверьте мой другой ответ выше для панели действий) - person SunnySonic; 25.09.2012
comment
если вы хотите использовать только phonegap и вызывать собственный код изнутри, вам придется пойти по пути создания какого-то плагина. Вот очень простой пример: catchmayuri. blogspot.in/2011/05/ - person SunnySonic; 25.09.2012
comment
Не за что. Я тоже боролся с этим в начале, и приятно иметь возможность смешивать родные приложения с приложениями телефонной связи. Было бы неплохо, если бы вы проголосовали за мой ответ. большое спасибо! - person SunnySonic; 25.09.2012
comment
Мне не хватает репутации. Но как только я доберусь туда - я буду. - person AppRoyale; 25.09.2012

Еще один вариант использования собственного кода в приложении телефонной связи для Android — использовать панель действий с вашим веб-просмотром для телефонной связи внизу или вверху.

Вот информация о встроенной панели действий Android, которая работает только с версии 3.0:

http://developer.android.com/guide/topics/ui/actionbar.html

или сторонняя панель действий, которая работает почти во всех версиях/адаптации собственной панели действий:

Вы можете проверить ActionBarSherlock http://actionbarsherlock.com/. Исходный код доступен здесь https://github.com/JakeWharton/ActionBarSherlock. Это даст вам представление о том, как он используется вместе с фрагментами. Это даст вам некоторое представление о том, как действовать дальше.

Существует библиотека совместимости с Android, созданная Google для использования некоторых новых API, которые они создали для сот в более низкой версии, например 1.5 и выше. Его можно найти в папке Android SDK, например E:\Program Files\Android\android-sdk-windows\android-compatibility\v4\android-support-v4.jar. Если у вас нет этой банки, вам нужно будет загрузить ее с помощью менеджера avd.

person SunnySonic    schedule 25.09.2012

У меня была эта проблема. В выводе журнала adb я видел:

D/TorchPlugin(30890): Plugin created
W/System.err(30890):    at nl.debree.phonegap.plugin.torch.TorchPlugin.<init>(TorchPlugin.java:41)
I/System.out(30890): Error adding plugin nl.debree.phonegap.plugin.torch.TorchPlugin.

Решение заключалось в том, чтобы добавить следующие разрешения в мой манифест Android:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />

Я надеюсь, что это помогает кому-то!

  • Гэвин
person gavD_UK    schedule 05.06.2013