LectureNotes App Wiki
Register
Advertisement

Getting started[]

This document was automatically created from LectureNotes' help page and describes v2.9.1.

LectureNotes is a quite powerful app and customizable to a very large extent, so it may take a moment until everything is adjusted to fit your needs. This document explains the different parts of the app (notebooks board, notebook content view, etc.), the meaning of the icons, and gives hints which should address most of the question that might arise. Please do not hesitate to contact us if you have a question that is not addressed here, this will help to improve this document in future versions.

To get started, you might wish to follow these first steps: After you launched the app, you will see an empty notebooks board and three icons in the so-called action bar, a ‘plus’ icon, a ‘trash’ icon, and a ‘share’ icon. Click on the ‘plus’ icon and on the ‘New notebook’ menu item. This brings up a dialog to create a new notebook. Choose a name for the notebook and a paper size of, for instance, ‘1280’ (width) and ‘1811’ (height) (and adjust colors and paper pattern if you wish, you can click on the ‘?’ aside the parameters, the app will then give help concerning the respective values) and click on ‘Create’. This will bring you back to the notebooks board which now contains the newly created notebook. Click on the notebook, this will open it and display the first notebook page. You will see a ‘pencil’ icon, an ‘eraser’ icon, etc. and you will be able to write into the notebook.

Notebooks board[]

This part of the app is to organize your notebooks. You come here when you start the app.

Action icons[]

Ic menu plus

Click to add a new notebook or a new folder to the current folder

Ic menu trash

Click to delete a notebook or a folder of the current folder

Ic menu trash active

‘Deletion’ mode is active, click to cancel deletion

Ic menu share

Click to share a notebook or a folder of the current folder

Ic menu share active

‘Sharing’ mode is active, click to cancel sharing

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Notebook and folder icons[]

Ic notebook1

Notebook (simple icon; options unicolor, display first page, or image)

Ic folder1

Folder (simple icon; options unicolor or image)

Ic notebook2

Notebook (elaborate icon)

Ic folder2

Folder (elaborate icon)

Usage[]

  • To create a new notebook, select ‘New notebook’ in the ‘plus’ menu.
  • To create a new folder, select ‘New folder’ in the ‘plus’ men
  • To create a new quick notebook, select ‘New quick notebook’ in the ‘plus’ menu (select ‘Quick notebook settings’ in the ‘plus’ menu to set the properties of newly created quick notebooks).
  • To import multiple pages of a PDF file as pages into a new notebook, select ‘Import PDF as new notebook’ in the main menu (PDF import requires a file manager app to be installed for PDF file selection and PDFView to be installed for PDF rendering, cf. the app's import settings for PDF rendering resolution, margins, and alignment).
  • Click on a notebook to open it, long-click on a notebook to access its index, overview, replay, video replay, or settings, to move it, or to create a shortcut icon on your launcher screen (notebook replay and video replay require LectureRecordings and LectureVideos to be installed, respectively).
  • Click on a folder to open it, long-click on a folder to access its settings, to move it, or to create a shortcut icon on your launcher screen.
  • To sort the notebooks and folders on the notebooks board, choose one of the four different schemes, (i) alphabetically by name, (ii) alphabetically and numerically by name (which sorts notebook and folder names containing arabic numbers such that the numbers are considered as a unit; for instance, ‘Notebook 20’ gets then sorted after ‘Notebook 3’ instead of, as alphabetic sorting requires, in front of it), (iii) by last modification date, and (iv) by creation date. All schemes can be applied in increasing or decreasing (inverse) order, cf. the notebooks board appearance in the app's display settings.
  • To backup the notebooks board, select ‘Backup notebooks board’ in the main menu, this will create a ZIP file containing all notebooks and folders.
  • To restore the notebooks board, select ‘Restore notebooks board’ in the main menu and select a ZIP file creating during a backup (only for an empty notebooks board).
  • To search the notebooks board for text layer content, keywords, notebook names, recording names, video names, and folder names, select ‘Find on notebooks board’ in the main menu (cf. the app's search settings).
  • To create a shortcut for a notebook on your launcher screen, long-click on the notebook and select ‘Create shortcut’ in the popup menu. This will update the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration, and dragging this icon onto your launcher screen will place the notebook icon. Clicking on the notebook icon will open the notebook on the last-opened page. Note that you can create several shortcuts first and place them one by one afterwards. Shortcut icons are only available on supporting devices.
  • To create a quick note shortcut for a notebook on your launcher screen, long-click on the notebook and select ‘Create quick note shortcut’ in the popup menu. This will update the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration, and dragging this icon onto your launcher screen will place the notebook icon with a ‘+’ in it. Clicking on this icon will append a page to the notebook and open it on the newly added page. Note that you can create several shortcuts first and place them one by one afterwards. Shortcut icons are only available on supporting devices.
  • To create a shortcut for a folder on your launcher screen, long-click on the folder and select ‘Create shortcut’ in the popup menu. This will update the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration, and dragging this icon onto your launcher screen will place the folder icon. Clicking on the folder icon will open the folder. Note that you can create several shortcuts first and place them one by one afterwards. Shortcut icons are only available on supporting devices.
  • To create a quick notebook shortcut on your launcher screen, ensure that there are neither pending notebook nor folder shortcuts and drag the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration onto your launcher screen, this will place the app icon with text ‘Quick notebook’ below it. Clicking on this icon will create a new quick notebook and open it on the first page. Shortcut icons are only available on supporting devices.
  • To open a notebook or a folder via a link, use URIs with the scheme ‘lecturenotes://’ (for instance, the current page in focus of notebook ‘Notebook’ in folder ‘Folder/​Subfolder’ can be opened by ‘lecturenotes://​Folder/​Subfolder/​Notebook’, whereas page ‘7’ in this notebook can be opened by ‘lecturenotes://​Folder/​Subfolder/​Notebook/​7/’). Note that URIs can only contain a subset of ASCII characters, other characters in folder and notebook names need to be encoded (for instance, a space ‘ ’ has to be encoded as ‘%20’).

A notebook is a collection of pages on which you can write, whereas a folder serves to organize and can contain notebooks, other folders, or both.

Notebook content view[]

This part of the app is to write into your notebooks. You come here when you open the notebook in notebook content view by clicking on the notebook or via the ‘notebook content view’ menu items.

Action icons[]

Note that some of the icons listed below are hidden by default.

Ic menu pencil

Click to activate ‘pencil’ mode to write in the notebook, long-click to activate ‘pencil’ mode to write in the notebook and to directly open the menu to choose pencil color and width

Ic menu pencil active

‘Pencil’ mode is active; click to open the menu to choose pencil color and width

Ic menu eraser

Click to activate ‘eraser’ mode to erase in the notebook, long-click to activate ‘eraser’ mode to erase in the notebook and to directly choose eraser width or to clear the page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu eraser active

‘Eraser’ mode is active; click to open the menu to choose eraser width or to clear the page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu keyboard

Click to activate ‘keyboard’ mode to type text into the notebook, long-click to activate ‘keyboard’ mode to type text into the notebook and to directly choose text properties (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu keyboard active

‘Keyboard’ mode is active; click to open the menu to choose text properties (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu cutter

Click to activate ‘cutter’ mode to cut, copy, and paste within notebook pages and across notebooks, long-click to activate ‘cutter’ mode to cut, copy, and paste within notebook pages and across notebooks and to directly open the menu to choose cutter type or to paste last selection (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu cutter active

‘Cutter’ mode is active; click to open the menu to choose cutter type or to paste last selection (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu hand

Click to activate ‘hand’ mode to scroll the notebook, long-click to activate ‘hand’ mode to scroll the notebook and to directly open the menu to scroll page-wise or to insert, to append, or to delete pages (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu hand active

‘Hand’ mode is active; click to open the menu to scroll page-wise or to insert, to append, or to delete pages (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu pointer

Click to activate ‘pointer’ mode to point into the notebook (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu pointer active

‘Pointer’ mode is active (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu drawing

Click to access the drawing tools (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu drawing active

A drawing tool is active; click to access the drawing tools (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu zoom

Click to set adjustable fixed zoom levels (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu layer

Click to access the different layers of the notebook page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu undo disabled

Nothing to undo

Ic menu undo

Click to undo last action

Ic menu redo disabled

Nothing to redo (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu redo

Click to redo last undo action (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu backward

Click to scroll notebook backward by one page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu forward

Click to scroll notebook forward by one page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu insertafter

Click to insert a new notebook page after the current page (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu plus

Click to append a new notebook page and move to it (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu arrow

Click to scroll notebook page forward by a small amount (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu share

Click to share a selection, a text layer, a notebook page, or the whole notebook (symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu photocamera

Click to import image directly from camera (requires a camera app to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu inputzone portrait

Click to show the input zone (for ‘input zone’ input method only, symbol can be optionally enabled in the input zone setup the app's input settings)

Ic menu inputzone portrait active

Click to temporarily hide the input zone (for ‘input zone’ input method only, symbol can be optionally enabled in the input zone setup the app's input settings)

Ic menu microphone

Click to start to record audio and notebook focus while taking notes (requires LectureRecordings to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu microphone active

Audio is recorded; click to stop to record audio and notebook focus while taking notes (requires LectureRecordings to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu speaker

Click to start or to restart to replay audio while taking notes (requires LectureRecordings to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu speaker active

Audio is replayed; click to pause or to stop to replay audio while taking notes (requires LectureRecordings to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu videocamera

Click to start to record video and audio while taking notes (requires LectureVideos to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu videocamera active

Video and audio is recorded; click to stop to record video and audio while taking notes (requires LectureVideos to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu presentation

Click to start to show presentation while taking notes (requires LecturePresentations to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu presentation active

Presentation is shown; click to stop to show presentation while taking notes (requires LecturePresentations to be installed, symbol can be optionally hidden in the app's menu settings if functionality is not needed)

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

If the icons take more space than available in the action bar, they can be scrolled horizontally. A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Selection, insertion, cropping, and text drawing tool icons[]

Ic dialog cancel button translucent

Click to cancel selection, insertion, cropping, or text

Ic dialog copy button translucent

Click to copy selection

Ic dialog cut button translucent

Click to cut selection

Ic dialog fill button translucent

Click to fill inside or outside selection

Ic dialog insert button translucent

Click to insert insertion or text or to use cropping rectangle

Ic dialog rotateflipfull button translucent

Click-and-drag to rotate or flip insertion

Ic dialog scale button translucent

Click-and-drag to scale insertion

Ic dialog translucency button translucent

Click to adjust opacity (or translucency) of insertion

Ic dialog style button translucent

Click to change text font family, style, size, or color

Ic dialog move button translucent

Click-and-drag to move text box

Ic dialog size button translucent

Click-and-drag to resize text box

Input zone icons[]

Ic dialog zoomminus button

Click to decrease input zone zoom

Ic dialog zoomplus button

Click to increase input zone zoom

Ic dialog undo button

Click to undo

Ic dialog redo button

Click to redo

Ic dialog directionleft button

Click to set right-to-left writing direction

Ic dialog directionright button

Click to set left-to-right writing direction

Ic dialog pencil button

Click to activate ‘pencil’ mode

Ic dialog eraser button

Click to activate ‘eraser’ mode

Ic dialog arrowleft button

Click for a ‘new line’ (left-to-right writing direction)

Ic dialog arrowright button

Click for a ‘new line’ (right-to-left writing direction)

Usage[]

  • As the world of Android is very diverse, the app contains five different approaches concerning palm rejection, (1) stylus detection via hardware (in the settings ‘Use stylus (hardware detection)’, devices with active stylus only), (2) stylus detection via software emulation (‘Use stylus (software emulation)’, not functional on all devices), (3) heuristic palm rejection (‘Use heuristic palm rejection’), (4) input zone (‘Provide input zone’), and (5) safe zone (‘Provide safe zone’). The first approach is for devices with active stylus, the second approach functions on some devices with passive (capacitive) stylus, and the latter three approaches are for devices with passive (capacitive) stylus.
    1. Stylus detection via hardware is for devices with active stylus and relies on information provided by the Android system to the app. It does not require any adjustment: If your stylus is not recognized or your finger or your palm cause strokes, stylus detection via hardware is not functional on your device.
      Devices for which stylus detection via hardware functions are for example Samsung devices with S-pen.
      Stylus detection via hardware is the recommended input method on devices with active stylus.
    2. Stylus detection via software emulation functions on some devices with passive (capacitive) stylus and relies on information provided by the Android system to the app. It requires adjustment of sensitivity to your device and your stylus: If your finger or your palm cause strokes, increase the sensitivity, whereas if your stylus is not detected, decrease the sensitivity; if your finger or your palm cause strokes for the highest sensitivity or your stylus is not detected for the lowest sensitivity, stylus detection via software emulation is not functional on your device and you should try the heuristic palm rejection, the input zone, or the safe zone.
      Devices for which stylus detection via software emulation functions are for example many Samsung devices with Adonit and Wacom stylus (with sensitivity between ‘20’ and ‘50’, depending on your writing style).
    3. The heuristic palm rejection is for devices with passive (capacitive) stylus and applies an heuristic scheme to distinguish between your stylus and your palm. It requires adjustment to right or left hander and of a delay: If your palm erroneously causes input, increase the delay, whereas if input is erroneously erased, decrease the delay; a delay of ‘5000 ms’ for right hander and of ‘2000 ms’ for left hander should work in most cases. Note that, when using heuristic palm rejection, one and two fingers gestures are possible only in ‘hand’ mode.
      The heuristic palm rejection functions on all devices with passive (capacitive) stylus.
    4. The input zone is for devices with passive (capacitive) stylus and provides a zoomed area for writing of adjustable height at the bottom of the display (a safe zone can be added below the input zone in which all input is ignored). It requires adjustment to left to right or right to left writing direction. You can constrain input to active stylus on devices with active stylus (if your stylus is not recognized or your finger or your palm cause strokes, stylus detection via hardware is not functional on your device). The area zoomed into the input zone can be placed on the page either by a single click on the desired place, by dragging it to the desired place, or by two fingers gestures inside the input zone. It can additionally be moved by clicking on the control buttons at the boundary of the input zone, the amount of movement by the control buttons can be adjusted individually for horizontal and vertical movement as well as for new line (the horizontal step size can be adjusted in two ways, the vertical step sizes can also automatically adjust to the line distance of ruled and checkered standard pattern – or to custom pattern when based on ruled or checkered standard pattern – if the notebook has such paper pattern). Optionally, there are two modes of automatic movement of the input area, (a) delay-induced or (b) position-controlled.
      In mode (a), the auto-movement occurs after an adjustable delay; an adjustable fraction of the input zone can be declared as passive not triggering the auto-movement and the amount of movement is controlled by the adjustable fraction of width of the previously used area that is kept visible after scrolling and an optional new line at the end of a line.
      In mode (b), the auto-movement occurs when writing into the highlighted active area, where the left (right) side of the active area corresponds to the right-most (left-most) part of the written material for left-to-right (right-to-left) writing direction. The amount of movement is controlled by the adjustable fraction of width of the previously used area that is kept visible after scrolling (which determines the location of the active area), the size of the active area is determined by the adjustable width and the activation of the active area is controlled by the adjustable threshold, and an optional new line at the end of a line. In fact, this mode of automatic movement is much more difficult to describe than to use, it is recommended to just write until the active area gets highlighted and then write into the active area to see the behavior.
      To temporarily hide the input zone (for instance for larger drawings), select ‘Hide input zone’ in the ‘pencil’, ‘eraser’, or ‘cutter’ menus, and select ‘Show input zone’ in the same menus to show the input zone again. Alternatively, enable the input zone hide and show icon and hide and show the input zone using this icon. A safe zone can be optionally provided while the input zone is hidden, select ‘Show safe zone’ in the ‘pencil’, ‘eraser’, or ‘cutter’ menus to show the safe zone and ‘Hide safe zone’ (or ‘Show input zone’) in the same menus to hide it again.
      Note that it is advisable to enable ‘Allow free page floating’ in the app's handling settings to avoid that the area zoomed into the input zone gets hidden by input zone (the directions of free page floating can be constrained in the ‘Free page floating setup’, select ‘All directions’ or ‘Only vertically’).
      The input zone functions on all devices with passive (capacitive) stylus.
      The input zone is the recommended input method on devices with passive (capacitive) stylus.
    5. The safe zone is for devices with passive (capacitive) stylus and provides an area in which all input is ignored. It can be moved and adjusted using either one finger gestures or two fingers gestures, thereby optionally remaining attached to the display boundary. For two fingers gestures, you can set a minimal distance between the two fingers, a delay for such gesture, and an arrest mode, either full arrest, in size and vertical (still allowing horizontal movement), in size and horizontal (still allowing vertical movement), or in size only (still allowing horizontal and vertical movement); the arrest mode determines the behavior when you temporarily arrest the safe zone via the item ‘Arrest safe zone’ in the ‘hand’ menu to avoid to unintentionally moving or resizing it. To temporarily hide the safe zone (for instance for larger drawings), select ‘Hide safe zone’ in the ‘pencil’ menu, and select ‘Show safe zone’ in the same menu to show the safe zone again.
      The safe zone functions on all devices with passive (capacitive) stylus.
  • The app provides an input prediction to compensate for latency caused by Android's input processing; you can enable the input prediction in the app's input settings.
  • In case your stylus has buttons, you can enable use stylus buttons in the app's input settings and assign functions (eraser, cutter, scrolling, etc.) to them in the app's handling settings. Note that you have to press the stylus button first and to touch the display with your stylus afterwards (for some device/stylus combinations such as Samsung devices with S-pen, you need to release the stylus button before touching the display with your stylus). If your stylus has only one button, you can press the stylus button twice to access the second function (requires button detection in hover mode). In case you enable manual hover scrolling, you can scroll with the stylus button (for some device/stylus combinations such as Samsung devices with S-pen, enabling hover scrolling with stylus button disables other button usage).
  • In case your stylus has an eraser tail, you can use stylus eraser and assign functions (eraser, cutter, scrolling, etc.) to it in the app's handling settings.
  • To ease writing on small displays, the app contains a page auto-scroll mechanism (‘Auto-scroll page’ in the settings) as an alternative to the input zone. The page auto-scroll sets adjustable boundaries close to the borders of your display, upon writing across which the page is automatically scrolled horizontally (left or right boundary) or vertically (top or bottom boundary) after an adjustable delay. The four boundaries can be individually switched on and adjusted in distance to the respective display boundary. There is also the possibility of an automatic ‘new line’ if the page horizontal boundary was reached and an automatic ‘new page’ if the page vertical boundary was reached. The amount of scrolling is controlled by the adjustable fraction of width and height of the previously visible area that is kept visible after scrolling.
  • To create a shortcut for a notebook page on your launcher screen, enable the corresponding menu item in the app's menu settings and select ‘Create shortcut for page X’ in the main menu (where ‘X’ indicates the current page). This will update the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration, and dragging this icon onto your launcher screen will place the notebook icon with a ‘☆’ in it. Clicking on the notebook icon will open the notebook on the desired page. Note that you can create several shortcuts first and place them one by one afterwards. Shortcut icons are only available on supporting devices.
  • To create a widget for a notebook page on your launcher screen, drag the widget from the ‘widgets’ section of your launcher configuration onto the launcher screen, click on it to start the app, open the desired notebook, scroll to the desired page, and select ‘Set page X as widget’ in the main menu (where ‘X’ indicates the current page); the widget will display the content of the chosen notebook page. To create a widget for a notebook on your launcher screen, drag the widget from the ‘widgets’ section of your launcher configuration onto the launcher screen, click on it to start the app, long-click on the notebook, and select ‘Set notebook as widget’ in the popup menu; the widget will display the content of the page in focus (or the notebook cover, if there is no page in focus). Note that you can place several widgets first and assign them one by one afterwards. The widget resolution and other properties can be adjusted in the app's widget settings. Widgets are only available on supporting devices.

Notebook, folder, and notebooks board index[]

These parts of the app are to display the index of your notebooks, either for an individual notebook, for all notebooks within a folder, or for all notebooks on the notebooks board. You come here when you open the notebook in notebook index via the ‘notebook index’ menu items or via the ‘folder index’ or ‘notebooks board index’ menu items.

Usage[]

  • Select ‘Find on page’ in the main menu to search for a keyword or a phrase.
  • Click on a keyword in the table of contents part or on a page number in the index part to open the notebook in notebook content view at the indexed page.
  • Click on ‘tag page’ (or ‘tag pages’) in the index part to open the notebook in notebook overview with the corresponding page (or the corresponding pages) tagged.
  • Click on the notebook name to open the notebook in notebook content view.

Notebook overview[]

This part of the app is to display your notebook in overview. You come here when you open the notebook in notebook overview via the ‘notebook overview’ menu items.

Action icons[]

Ic menu plus

Click to append a new page to the notebook

Ic menu tagger

Click to tag and untag pages of the notebook

Ic menu tagger active

‘Tag’ mode is active, click to tag or untag all pages of the notebook, invert existing tags, and display only tagged pages

Ic menu trash

Click to delete tagged pages or a single page of the notebook

Ic menu trash active

‘Deletion’ mode is active, click cancel deletion

Ic menu share

Click to share tagged pages or a single page of the notebook

Ic menu share active

‘Sharing’ mode is active, click to cancel sharing

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Usage[]

  • To move a page within the notebook, long-click on it until a ‘shadow’ appears and move it to the desired new place (not available when displaying only tagged pages).
  • To move multiple pages within the notebook, tag the desired pages, long-click on one until the ‘shadows’ appear and move them to the desired new place (not available when displaying only tagged pages).
  • To import multiple images (stored in a ZIP file) as new pages into the notebook, select ‘Import image set as new pages’ in the main menu (requires a file manager app to be installed for ZIP file selection; cf. the app's import settings for margins and alignment).
  • To import multiple pages of a PDF file as new pages into the notebook, select ‘Import PDF as new pages’ in the main menu (PDF import requires a file manager app to be installed for PDF file selection and PDFView to be installed for PDF rendering, cf. the app's import settings for PDF rendering resolution, margins, and alignment).

Notebook replay[]

This part of the app is to replay recordings of your notebooks (requires LectureRecordings to be installed). You come here when your open the notebook in notebook replay via the ‘notebook replay’ menu items.

Action icons[]

Ic menu replay light

Open recording is pausing, click to resume replay

Ic menu pause light

Open recording is playing, click to pause replay

Ic menu trash

Click to delete a recording of this notebook

Ic menu trash active

‘Deletion’ mode is active, click to cancel deletion

Ic menu share

Click to share a recording of this notebook

Ic menu share active

‘Sharing’ mode is active, click to cancel sharing

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Control icons[]

Ic menu replay

Click to replay recording

Ic menu pause

Click to pause recording

Replay and pause can also be controlled via headphone buttons.

Usage[]

  • Click on a closed recording in the left list to open it.
  • Click on an open recording in the left list to close it, click on the ‘replay’ icon to replay it, click on the ‘pause’ icon to pause it, drag the slider to move to a given point in time.
  • To rename a recording, long-click on it.
  • Drag on the vertical divisor to move it left or right.
  • Disable ‘Auto-scroll’ to avoid automatic scrolling during replay.
  • Enable ‘Combine recordings’ to automatically replay the next recording after a given recording has finished.
  • Select ‘Search recordings’ and click on a notebook area to find recordings that contain that notebook area.
  • Select ‘Search recordings for page X’, where ‘X’ indicates the current page, to find recordings that contain the current notebook page.

Notebook video replay[]

This part of the app is to replay videos of your notebooks (requires LectureVideos to be installed, LectureVideos requires Android 4.1 or later). You come here when you open the notebook in notebook video replay via the ‘notebook video replay’ menu items.

Action icons[]

Ic menu replay light

Open video is pausing, click to resume replay

Ic menu pause light

Open video is playing, click to pause replay

Ic menu trash

Click to delete a video of this notebook

Ic menu trash active

‘Deletion’ mode is active, click to cancel deletion

Ic menu share

Click to share a video of this notebook

Ic menu share active

‘Sharing’ mode is active, click to cancel sharing

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Control icons[]

Ic menu replay

Click to replay video

Ic menu pause

Click to pause video

Replay and pause can also be controlled via headphone buttons.

Usage[]

  • Click on a closed video in the list to open it.
  • Click on an open video in the list to close it, click on the ‘replay’ icon to replay it, click on the ‘pause’ icon to pause it, drag the slider to move to a given point in time.
  • To rename a video, long-click on it.
  • To multiplex the video into an MP4 container file, enable the corresponding option in the app's extension settings and share the video (requires Android 4.3 or later).

Custom paper pattern editor[]

This part of the app is to edit a custom paper pattern. You come here when you select ‘custom’ as paper pattern.

Action icons[]

Ic menu undo disabled

Nothing to undo

Ic menu undo

Click to undo last change

Ic menu redo disabled

Nothing to redo

Ic menu redo

Click to redo last undo change

Ic menu share

Click to share pattern

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Usage[]

  • To reuse code of another notebook or use one of the predefined examples, select ‘Use template’ in the main menu.
  • To import code, select ‘Import code’ in the main menu (requires a file manager app to be installed for file selection).
  • To test the code, select ‘Run’ in the main menu; click on the display to get back to the editor.

Custom paper pattern overview[]

This part of the app is to organize your custom paper patterns. You come here when you select ‘use template’ in the custom paper pattern editor.

Action icons[]

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

Usage[]

  • To use the custom paper pattern of another notebook or use one of the predefined examples, click on it.

Custom drawing tool settings[]

This part of the app is to setup your custom drawing tools. You come here when you select ‘custom drawing tool settings’ in the drawing tools menu or when you double-click on a custom drawing tool in the pencil toolbox.

Action icons[]

Ic menu plus

Click to add a new custom drawing tool or a new container

Ic menu trash

Click to delete a custom drawing tool or a container

Ic menu trash active

‘Deletion’ mode is active, click to cancel deletion

Ic menu share

Click to share a custom drawing tool or a container

Ic menu share active

‘Sharing’ mode is active, click to cancel sharing

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Usage[]

  • To include or exclude a custom drawing tool in the drawing tools menu and the pencil toolbox, enable or disable the checkbox on the left.
  • To include or exclude a container and its content in the drawing tools menu and the pencil toolbox, enable or disable the checkbox on the left.
  • To rename a container, click on it, and change the name in the dialog.
  • To reuse another icon as container icon, click on the container, and select ‘Change icon’ and choose ‘Use template icon’ in the dialog.
  • To use a clipboard image as container icon, click on the container, and select ‘Change icon’ and choose ‘Paste icon from clipboard’ in the dialog. The pasted image will be converted to grayscale, where black will be the foreground and white will be the background color.
  • To import an image as container icon, click on the container, and select ‘Change icon’ and choose ‘Import icon’ in the dialog. The imported image will be converted to grayscale, where black will be the foreground color and white will be the background color.
  • To move a custom drawing tool or a container within the list, long-click on it until a ‘shadow’ appears and move it to the desired new place.

Custom drawing tool editor[]

This part of the app is to edit a custom drawing tool. You come here when you click on a custom drawing tool in the custom drawing tool settings.

Action icons[]

Ic menu undo disabled

Nothing to undo

Ic menu undo

Click to undo last change

Ic menu redo disabled

Nothing to redo

Ic menu redo

Click to redo last undo change

Ic menu share

Click to share tool

Ic menu overflow

Click to access main menu (not available on devices with hardware buttons; click on the hardware menu button to access the main menu on these devices)

A long-click on an icon gives a short explanation of its function (devices with Android 4.0 or later only).

Usage[]

  • To add parameters to the custom drawing tool, enter the parameter name and whether it is a string or a numerical parameter. In the latter case, enter the minimal and the maximal value, the number of steps (at minimum two steps), and the default value. For the minimal, the maximal, and the default value, non-integer numbers can be entered, the fractional part has to be separated using ‘.’.
  • To hide or show comment, author, and parameters, click on the open or close icon left of the drawing tool name.
  • To reuse another custom drawing tool, select ‘Use template’ in the main menu.
  • To reuse icon, select ‘Use template icon’ in the main menu.
  • To reuse another custom drawing tool's code, select ‘Use template code’ in the main menu.
  • To use a clipboard image as icon, select ‘Paste icon from clipboard’ in the main menu. The pasted image will be converted to grayscale, where white will be the paper color and black will be the pencil's color.
  • To import an image as icon, select ‘Import icon’ in the main menu. The imported image will be converted to grayscale, where white will be the paper color and black will be the pencil's color.
  • To import code, select ‘Import code’ in the main menu (requires a file manager app to be installed for file selection).
  • To test the code, select ‘Run’ in the main menu; click on the display to get back to the editor.

Some hints[]

Setup[]

  • Enabling force GPU rendering or force hardware rendering in your device's developer settings usually slows down response to writing and scrolling.
  • When enabling fast temporary rendering in the app's display settings, faster but less accurate schemes are used to render temporary content on the display (enabling this options is recommend for slow devices only).
  • When enabling fast page rendering in the app's display settings, faster but less accurate schemes are used to render notebook content on the display (enabling this options is recommend for high resolution or slow devices only).
  • For how to setup the app's palm rejection, see ‘Usage’ in the ‘Notebook content view’ section above.
  • The app offers five options in the settings which might be important for left handers, setting a horizontal and vertical offset of touch input in ‘Shift input setup’, disabling the back key with ‘Disable back key’, exchanging position of the vertical scroll bar and the zoom bar with ‘Exchange vertical scroll bar and zoom bar’, putting the app's launcher icon on the right side for hidden action bar with ‘App's launcher icon on right side’, and choosing ‘Left hander’ in ‘Heuristic palm rejection setup’ (the latter if stylus detection via hardware or software emulation is not functional on your device and you wish to use the heuristic palm rejection).
  • In case your palm gets erroneously interpreted as two fingers gesture (scrolling or zooming), increase the minimal distance or the delay for two fingers gestures in the app's input settings.
  • Clicking on the notebook in the new notebook and notebook settings dialogs cycles through a couple of standard cover colors, long-clicking on the notebook allows to set an image as cover, clicking on the paper cycles through a couple of standard paper background and paper pattern colors, and clicking on ‘?’ aside the notebook's name, paper size, and paper pattern gives suggestions concerning these parameters. Clicking on ‘Time stamp’ sets the notebook name to a time stamp based on the the current time (long-clicking provides several time stamp variants). Clicking on ‘Use template’ in the new notebook dialog allows to use an existing notebook as template for the new one (long-clicking provides two variants for how notebooks act as template).
  • Clicking on the folder in the new folder and folder settings dialogs cycles through a couple of standard cover colors, long-clicking on the folder allows to set an image as cover, and clicking on ‘?’ aside the folders's name gives suggestions concerning this parameter. Clicking on ‘Time stamp’ sets the folder name to a time stamp based on the current time (long-clicking provides several time stamp variants). Clicking on the ‘Use template’ in the new folder dialog allows to use an existing folder as template for the new one (long-clicking provides two variants for how folders act as template).

Writing and erasing[]

  • Moving the eraser in a closed path so that start and end point are close erases the interior (‘lasso’ erase).
  • To smooth your writing, you can apply four input filters (independently as well as in combination), the first filter discards coordinates below an adjustable pressure threshold (devices with active stylus only), the second filter discards coordinates between input events sent by the Android system, the third applies a Savitzky-Golay filter of an adjustable order, and the fourth applies a Ramer-Douglas-Peucker filter with an adjustable strength (cf. the app's input settings).
  • To ease exact positioning of your stylus, you can get a ‘hover’ displayed when you approach the display with your stylus. You can also scroll with hover, either manually with stylus button or automatically when getting close to the display boundary (cf. the app's input settings, devices with Android 4.0 or later and active stylus only).
  • To use the pencil toolbox, select ‘Show pencil toolbox’ in the ‘pencil’ menu and click-and-drag the pencil toolbox to move it around. The content (standard pencils, custom pencils, color selector, opacity selector, line width selector, drawing tools, and custom drawing tools) and the apperance can be customized in the app's tools settings.
  • The standard drawing tools such as line, rectangle, oval (or optionally circle), and text can be accessed via the pencil toolbox or via the menu at the ‘drawing tools’ icon (cf. the app's tools and menu settings). The temporary rendering while selecting the standard drawing tool size can be done using either a faster scheme only displaying a simple sketch of the standard drawing tool or a slower scheme displaying the standard drawing tool (cf. the app's tools settings).
  • The custom drawing tools can be accessed via the pencil toolbox or via the menu at the ‘drawing tools’ icon (cf. the app's tools and menu settings). Clicking on a custom drawing tool in the pencil toolbox sets its; clicking on a container enters the container, clicking on the ‘back’ icon in the container leaves the container. Double-clicking on a custom drawing tool in the pencil toolbox or selecting the corresponding item in the ‘drawing tools’ menu brings up the custom drawing tool settings dialog. The temporary rendering while selecting the custom drawing tool size can be done using either a faster scheme only displaying a simple rectangle or a slower scheme displaying the custom drawing tool (cf. the app's tools settings).
  • To add typed text via keyboard to a notebook page, choose keyboard mode and enter the text into the text layer. There are two possibilities for the text layer, the main field and supplementary fields.
    In the main field, the text is page-wise and is placed within the margins set in the settings (indicated by the dashed rectangle), it is cut at the bottom (when you scroll the text layer to access material below the bottom, the bottom is indicated by a horizontal line, page breaks can be inserted using the item in the ‘keyboard’ menu), it can be formatted using the items in the ‘keyboard’ menu or using adjustable shortcuts (for instance Ctrl-i, Ctrl-b, etc.) starting from the default font family, style, size, and color (cf. the app's handling settings, can be overridden by notebook-specific default values in notebook settings).
    For the supplementary fields (i.e., text boxes), select an area on the notebook page and enter the text. The text is placed within the selected area (indicated by the dashed rectangle, can be moved and resized), it is cut at the bottom (when you scroll to access material below the bottom, the bottom is indicated by a horizontal line), it can be formatted using the items in the ‘keyboard’ menu or using adjustable shortcuts (for instance Ctrl-i, Ctrl-b, etc.) starting from the default font family, style, size, and color (cf. the app's handling settings, can be overridden by notebook-specific default values in notebook settings).
    The text layer can be placed in the layer hierachy using the items in the ‘layer’ menu, and both main and supplementary fields can be searched.
    As a third option, use the text drawing tool via the pencil toolbox or via the menu at the ‘drawing tools’ icon, select an area on the notebook page and enter the text. The text is placed within the selected area (indicated by the dashed rectangle, can be moved and resized), it is cut at the bottom (when you scroll to access material below the bottom, the bottom is indicated by a horizontal line), it can be formatted using the items in the popup menu accessible via the style icon in the lower left corner or using adjustable shortcuts (for instance Ctrl-i, Ctrl-b, etc.) starting from the default font family, style, and size, and from the current pencil color (cf. the app's tools and menu settings). Finally, insert the text into the active layer, or long-click and move, scale, and rotate the text as desired before insertation (the action of click and long-click can optionally be exchanged).
    For both text layer and text drawing tool, left-to-right and right-to-left writing direction as well as bidirectional text are supported (there are optional adjustable shortcuts to ease the latter). To place the cursor, click on the desired place; to scroll, click and drag; to select text to cut, copy, or paste, long-click on the text; to select text for formating, use the cursor keys with shift key pressed, or long-click on the text and select ‘Format’ in the popup (or the ‘keyboard’ or ‘style’ icon, respectively, on devices that display the options as icons).
  • Double-clicking on a custom pencil in the pencil toolbox brings up the custom pencil settings dialog. If you wish to see numerical values for color, line width, opacity, and softness or to select colors as RGB values, enable ‘display numbers in custom pencil settings’ in the app's display settings and ‘select colors as RGB’ in the app's handling settings, respectively.
  • A custom pencil can be made to act as a marker or highlighter tool by choosing the desired color and line width, an intermediate opacity, and enabling ‘Pencil draws behind other colors’. To quickly change to the highlighter can be done by using the pencil toolbox or, in case your stylus has a button, by assigning the custom pencil to the stylus button. Note that if you wish to highlight in an imported PDF file, you should enable ‘render on translucent background’ in the app's import settings.
  • Clicking on the preview in the custom pencil settings dialog cycles through the standard pencil colors and widths as well as the other custom pencils (the latter allowing to copy custom pencil properties).
  • To pick a color from a notebook page for a custom pencil, select ‘Pick color from layer’ in the ‘pencil’ menu and click on the desired color.
  • To pick the complementary of a color from a notebook page for a custom pencil, select ‘Pick complementary color from layer’ in the ‘pencil’ menu and click on the desired color.
  • To save the custom pencils to a palette, click on the ‘Save to palette’ button in the custom pencils settings dialog and enter a name (an existing palette can be overwritten by selecting it in the list, otherwise a new palette will be created); to load the custom pencils from a palette, click on the ‘Load from palette’ button and select the desired palette.
  • To use the app's multi-layer feature, the ‘layer’ icon needs to be enabled in the app's menu settings. In the corresponding menu, you can choose which layers are displayed and add, exchange, merge, and remove layers.

Handling[]

  • New pages can added to a notebook in multiple ways: Using the ‘Append page’, ‘Insert page before page X’ or ‘Insert page after page X’ items in the ‘hand’ menu (where ‘X’ indicates the current page), using the ‘insert page’ icon, using the ‘plus’ icon, or scrolling using the volume keys or the arrow keys of a keyboard, the ‘page forward’ or the ‘arrow’ icons, which will all three automatically append a new page when scrolling beyond the last notebook page. Lastly, new pages can be added in notebook overview.
  • Gestures, the volume keys, the arrow keys of a keyboard, and the wheel of a mouse can be used for scrolling (i.e. page advancing); there is also the possibility of scrolling by the ‘page backward’, ‘page forward’, and ‘arrow’ icons, by the items in the ‘hand’ menu (‘overview’, ‘go to page’, ‘one page forward/backward’, and ‘go to first/last page’), and by dragging the scroll bars (cf. the app's input and handling settings).
  • Gestures can be used for zooming (i.e. changing the zoom level); there is also the possibility of zooming by dragging the zoom bar (cf. the app's input settings).
  • To temporarily disable scrolling or zooming by gestures, select ‘Disable scroll/zoom’ in the ‘pencil’, ‘eraser’, or ‘cutter’ menu.
  • Clicking on the app's launcher icon brings up a navigation menu with shortcuts and a list of recently opened notebooks.
  • To attach a keyword to a notebook page, select ‘Index page X’ (where ‘X’ indicates the current page) in the main menu. URIs can be used as keywords; keywords starting with ‘file://’, ‘http://’, ‘https://’, or ‘mailto:’ serve as links to external sources; keywords starting with ‘lecturenotes://’ will be interpreted as reference to a notebook and serve as inter- as well as intra-notebook links (for instance, the current page in focus of notebook ‘Notebook’ in folder ‘Folder/​Subfolder’ can be referenced as ‘lecturenotes://​Folder/​Subfolder/​Notebook’, whereas page ‘7’ in this notebook can be referenced as ‘lecturenotes://​Folder/​Subfolder/​Notebook/​7/’). Note that in difference to URIs added to the text layer, all characters including non-ASCII characters are allowed, but encoding via ‘%’ is supported and hence the character ‘%’ has to be encoded as ‘%25’.
  • To obtain a table of contents and an index of a notebook, of the present folder, or of the whole notebooks board, based on the keywords attached to notebook pages, select ‘Notebook index’, ‘Folder index’, or ‘Notebooks board index’ in the main menu, respectively.
  • To add links to external and internal material, add the respective URI to the text layer, they are clickable in ‘hand’ mode. URIs starting with ‘file://’, ‘http://’, ‘https://’, or ‘mailto:’ link to external sources; URIs starting with ‘lecturenotes://’ serve as inter- as well as intra-notebook links (for instance, the current page in focus of notebook ‘Notebook’ in folder ‘Folder/​Subfolder’ can be referenced as ‘lecturenotes://​Folder/​Subfolder/​Notebook’, whereas page ‘7’ in this notebook can be referenced as ‘lecturenotes://​Folder/​Subfolder/​Notebook/​7/’). Note that URIs can only contain a subset of ASCII characters, other characters in file paths, file names, folder names, and notebook names need to be encoded (for instance, a space ‘ ’ has to be encoded as ‘%20’). To ease adding a link to a notebook (in particular, if the involved folder names and notebook name contain special characters), use ‘Notebook link’ in the ‘keyboard’ menu.
  • To add a time stamp to a notebook page, use a supplementary field of the text layer or the text drawing tool, select ‘Time stamp’ in the ‘keyboard’ menu or the style popup (or use the adjustable shortcut), and scale and place it as desired (a time stamp can also be added as keyword to a notebook page using ‘Index page X’, where ‘X’ indicates the current page).
  • To fill or recolor inside the selection or to fill or erase outside the selection, click on the ‘bucket’ icon in the lower left corner.
  • To quickly move a selection, enable ‘Quick cut, move, and paste’ in the app's handling settings and click-and-drag in the selection's interior, this will move and automatically paste the selection at the new location. Alternatively, click-and-drag on the cut icon, this will directly move the selection.
  • To let the cutter operate on all layers simultaneously, enable ‘Work in all layers’ in the ‘cutter’ menu.
  • To access various non-standard clipboards, select ‘Paste from non-standard clipboard’ in the ‘cutter’ menu.
  • Selecting ‘Paste from clipboard’ in the ‘cutter’ menu brings back the last selection; to access older selections, select ‘Paste from non-standard clipboard’ in the ‘cutter’ menu.
  • To cut or copy a selection from one notebook to another, open the first notebook, select the area, cut or copy, abort paste, close the first notebook, open the second, and select ‘Paste from clipboard’ in the ‘cutter’ menu (to paste the last cut or copied selection is of course also possible within the same notebook). Note that multiple layer cut, copy, and paste works also across notebooks if the notebooks have the same number of layers.
  • To rotate cut, copied, or imported material, click on the ‘arrows’ icon in the lower left corner and move circular around the center of the selection (a short click on the icon rotates to multiples of 90 degrees); to mirror cut, copied, or imported material, click on the icon in the lower left corner and move towards the center of the selection.
  • To crop imported material, long-click on the material and adjust the boundaries.
  • To adjust the opacity (or translucency) of imported material, long-click on the material, click on the ‘α’ icon and adjust the opacity (or translucency).
  • To quickly insert a selection, an image, or text, enable ‘Quick insertion’ in the app's handling settings, then changing to a tool (pencil, eraser, etc.) inserts the material instead of aborting the insertion.
  • To insert vertical/horizontal space, so that as a result the material below/right of a horizontal/vertical line is moved down/to the right, select ‘Insert vertical/horizontal space’ in the ‘cutter’ menu, place the division line, and move the material down/to the right. Note that you can do that for the working layer as well as for all layers simultaneously, for the latter enable ‘Work in all layers’ in the ‘cutter’ menu.
  • To divide a page horizontally/vertically, so that as a result the upper/left part remains on one page and the lower/right part is moved to a new page, effectively inserting a page at the division line, select ‘Divide page horizontally/vertically’ in the ‘cutter’ menu and place the division line. The material below or right to the dividing line can optionally be moved to the top or to the left of the new page (cf. the app's handling settings).
  • To copy a subset of notebook pages from one notebook to another, open the source notebook in notebook overview, and tag the desired pages; then (i) select ‘Copy tagged pages to clipboard’ in the main menu, close the source notebook, open the target notebook in notebook overview, and select ‘Paste pages from clipboard’ in the main menu (to paste the clipboard is of course also possible within the same notebook), or (ii) select ‘Copy tagged pages to notebook’ in the main menu and select the target notebook. Note that the target notebook needs to have at least as many layers as the source notebook. To copy notebook pages that contain a keyword, select ‘Notebook index’ or ‘Notebooks board index’ in the main menu and click on ‘(tag pages)’ next to the keyword, this will open the notebook overview with the corresponding pages tagged.
  • To copy a subset of notebook pages from a DocumentScanner notebook to a LectureNotes notebook, start DocumentScanner, open the source notebook in notebook overview, and tag the desired pages; then select ‘Copy tagged pages to clipboard’ in the main menu, close the source notebook, start LectureNotes, open the target notebook in notebook overview, and select ‘Paste pages from clipboard’ in the main menu.
  • To use DocumentScanner for image import in LectureNotes, start both DocumentScanner and LectureNotes, open a notebook in DocumentScanner to hold the ‘scans’ and open a notebook in LectureNotes for annotation. If you wish to ‘scan’ a new image to be imported into LectureNotes, change to DocumentScanner, ‘scan’ a new page and crop it (notebook filters will be reused), then share the resulting page to LectureNotes. LectureNotes will come up, and if you enable ‘import image in open notebook’ in the app's import settings, it will open the last opened notebook and the shared image will directly go into it.
  • To show a pointer, enable the ‘pointer’ icon in the app's menu settings, then choose ‘pointer’ mode and click on the notebook page; the pointer size can be adjusted in the app's handling settings.
  • To place an image as paper background, use image paper pattern.
  • To get page pattern beyond plain, ruled, or checkered, use custom paper pattern coded in JavaScript, choose one of the many predefined examples or code your own one (see below).
  • To display the keywords as part of the paper pattern, use one of the custom paper pattern templates ‘plain with keywords at the bottom’, ‘ruled with keywords at the bottom’, or ‘checkered with keywords at the bottom’.
  • To use an existing notebook for quick notes, long-click on the notebook on the notebooks board and select ‘Create quick note shortcut’ in the popup menu. This will update the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration, and dragging this icon onto your launcher screen will place the notebook icon with a ‘+’ in it. Clicking on this icon will append a page to the notebook and open it on the newly added page. Shortcut icons are only available on supporting devices.
  • To create a new notebook for quick notes, ensure that there are neither pending notebook nor folder shortcuts and drag the LectureNotes shortcut icon in the ‘widgets’ section of your launcher configuration onto your launcher screen, this will place the app icon with a ‘Quick notebook’ below it. Clicking on this icon will create a new quick notebook and open it on the first page. Shortcut icons are only available on supporting devices.

Extension: LectureRecordings

  • To record audio and notebook focus while taking notes, either select ‘Start recording’ in the menu at the app's launcher icon to start recording and select ‘Stop recording’ in the same menu to stop recording; or enable the ‘microphone’ icon in the app's menu settings, click on the ‘microphone’ icon to start recording, and click again on the ‘microphone’ icon to stop recording (audio recording requires LectureRecordings to be installed). The elapsed time can optionally be displayed in the action bar while recording. Please note that the noise caused by your stylus on the device surface is inevitably recorded by the app when using the device's built-in microphone, therefore it is recommend to use an external microphone.
  • To replay a recording and notebook focus, open the notebook in notebook replay, click on the recording to open it, long-click on the recording to rename it, click on the ‘replay’ icon in the open recording to replay it, click on the ‘pause’ icon to pause it, drag the slider to move to a given point in time (audio replay requires LectureRecordings to be installed).
  • To replay a recording while taking notes, enable the ‘speaker’ icon in the app's menu settings, open the notebook in notebook content view, click on the ‘speaker’ icon to see the list of recordings, click on the recording to open it, click on the ‘replay’ icon in the open recording to replay it, click on the ‘pause’ icon to pause it, drag the slider to move to a given point in time (audio replay requires LectureRecordings to be installed).
  • To record with a higher sampling rate, enable ‘Record in higher quality’ in the app's extensions settings; note that this will results in a larger file size (audio recording requires LectureRecordings to be installed).
  • To circumvent the maximal recording length that same devices impose, enable ‘Auto-restart recordings’ in the app's extensions settings, this will automatically stop the active recording after 25 minutes and start of a new one. To replay the recordings in a continuous fashion, enable ‘Combine recordings’ in notebook replay to automatically replay the next recording after the active one has finished (audio recording and replay requires LectureRecordings to be installed).

Extension: LectureVideos (requires Android 4.1 or later)

  • To record video and audio while taking notes, either select ‘Start video recording’ in the menu at the app's launcher icon to start video and select ‘Stop video recording’ in the same menu to stop video recording; or enable the ‘video camera’ icon in the app's menu settings, click on the ‘video camera’ icon to start video recording, and click again on the ‘video camera’ icon to stop video recording (video recording requires LectureVideos to be installed). The UI elements can optionally be hidden in the recorded video and the elapsed time can optionally be displayed in the action bar while recording, cf. the app's extension settings. Please note that the noise caused by your stylus on the device surface is inevitably recorded by the app when using the device's built-in microphone, therefore it is recommend to use an external microphone.
  • To replay a video, open the notebook in notebook video replay, click on the video to open it, long-click on the video to rename it, click on the ‘replay’ icon in the open video to replay it, click on the ‘pause’ icon to pause it, drag the slider to move to a given point in time (video replay requires LectureVideos to be installed).
  • To keep the video file size small, it is recommended to enable ‘lower video frame rate’ in the app's extension settings, 12 frames per second are more than sufficient to record handwriting. Note that a video file of 720p (1280 × 720) at 12 frames per second results in approximatively 10 MB per minute, whereas 24 frames per second double that number to 20 MB per minute. Using the smaller video size 360p (640 × 360) quarter these numbers, 2.5 MB per minute and 5 MB per minute, respectively, but note that some devices have difficulties to handle videos files of 360p (640 × 360).
  • On some devices, the video is slightly delayed with respect to the audio. This can be compensated by the video/audio offset in the app's extension settings.
  • To produce a video/audio container file such as MP4, AVI or MKV for upload or streaming on devices running Androidd 4.1 and 4.2, you need to multiplex the encoded video file (extension ‘h264’) and the encoded audio file (extension ‘3gp’) using an external multiplexer tool, for instance FFmpeg. Depending on the tool used, it might be necessary to pass the frame rate (12 frames per second when using a lower frame rate, otherwise 24 frames per second) and the target bit rate (1.5 Mbps for a video file of 720p at 12 frames per second, double this number to 3.0 Mbps for 24 frames per second, and quarter these numbers to 0.375 Mbps and 0.75 Mbps, respectively, for a video file of 360p) as parameter.
    For example in case of FFmpeg and a 720p video with 12 frames per second, use
    ffmpeg -r 12 -i video1.h264 -i video1.3gp -b:v 1.5M video1.mp4
    or, if you are using an older version of ffmpeg that has no -b:v option, use
    ffmpeg -r 12 -i video1.h264 -i video1.3gp -b 1.5M video1.mp4
    On devices running Android 4.3 or later, LectureVideos supports multiplexing the video and audio files into an MP4 container file, and this can automatically be done prior to sharing the video by enabling the corresponding option in the app's extension settings.
  • Some devices contain video encoder of which most variants contain a bug and exchange the chroma components. LectureVideos can compensate this bug by exchanging the chroma components on its part, which is the default behavior for these problematic video encoders, cf. the option ‘exchange chroma components’ in the app's extension settings. Unfortunately, LectureVideos cannot distinguish affected video encoder variants from non-affected ones. If the colors are exchanged in recorded videos (but the video is fine otherwise, see below), the video encoder on your device is not affected and you need to disable this option.
    Exchanged chroma components has to be distinguished from another problem: There are some devices on which the primary video encoder and/or the primary video decoder (which are the ones that LectureVideos uses as default) do not work properly, which results in distorted videos (colored stripes, some colors occurring with a vertical and/or horizontal offset, etc.). Please contact us by email if observe this problem on your device.

Extension: LecturePresentations (requires Android 4.2 or later)

  • To give a presentation while taking notes, either select ‘Start presentation’ in the menu at the app's launcher icon to start presentation and select ‘Stop presentation’ in the same menu to stop presentation; or enable the ‘presentation’ icon in the app's menu settings, click on the ‘presentation’ icon to start presentation, and click again on the ‘presentation’ icon to stop presentation (presentation requires LecturePresentations to be installed). The UI elements can optionally be hidden in the presentation and the elapsed time can optionally be displayed in the action bar while presening, cf. the app's extension settings.
  • When LecturePresentations detects a suitable display for presentations, it shows a notification in the notification bar. To connect to the presentation display, select ‘Show presentation’ in the notification bar; to disconnect from the presentation display, select ‘Hide presentation’ in the notification bar. If there is no active presentation, the LecturePresentations logo is shown.

Import and export[]

  • The app registers as image viewer and as image receiver, so that you can import an image by opening or sharing it.
  • The app registers as PDF viewer and as PDF receiver, so that you can import a PDF file by opening or sharing it, either a single page into an existing notebook, as new pages into an existing notebook, or as new notebook (requires PDFView to be installed for registration and for PDF rendering, cf. the app's import settings for PDF rendering resolution, margins, and alignment).
  • To import an image or one page of PDF file, open the notebook and select ‘Import image’ or ‘Import PDF’ in the main menu, respectively (PDF import requires a file manager app to be installed for PDF file selection and PDFView to be installed for PDF rendering, cf. the app's import settings for image initial scaling and rotation and for PDF rendering resolution, respectively).
  • To import images from camera either select a gallery app upon image import which allows to access the camera, set the camera as image import source, or enable the ‘photo camera’ icon in the app's menu settings and click on the ‘photo camera’ icon (requires a camera app to be installed, cf. the app's import settings). To keep camera files when importing directly from camera, enable the corresponding option in the import image setup and choose whether to store the camera files in the app directory with time-stamped file names or within the DCIM directory (identifier is ‘LNOTE’).
  • To export a notebook to PDF, either open the notebook and select ‘Export to PDF’ in the main menu, or long-click on the notebook on the notebooks board and select ‘Export to PDF’ in the popup menu (cf. the app's export settings for paper size, margins etc.).
  • To export a subset of notebook pages to PDF, open the notebook in notebook overview, tag the desired pages, and select ‘Export tagged pages to PDF’ in the main menu. To export notebook pages that contain a keyword, select ‘Notebook index’ or ‘Notebooks board index’ in the main menu and click on ‘(tag pages)’ next to the keyword, this will open the notebook overview with the corresponding pages tagged.
  • To export the visible layers (and only those) to PDF, select ‘include visible layers’ in the PDF export setup in the app's export settings.
  • To export a subset of layers to PDF, select the desired layers in the PDF export setup in the app's export settings.
  • To quickly export single notebook pages to PDF, enable the single page export items in the app's menu settings and select ‘Export page X to PDF’ (where ‘X’ indicates the current page) in the main menu.
  • To export all notebooks of a folder to PDF, including notebooks in subfolders, either open the folder on the notebooks board and select ‘Export folder to PDF’ in the main menu, or long-click on the folder on the notebooks board and select ‘Export to PDF’ in the popup menu. The export can be constrained to notebooks which have been modified since their last export to PDF (not for time- or page set-stamped PDF file names).
  • To export all notebooks to PDF, select ‘Export notebooks board to PDF’ in the notebooks board main menu. The export can be constrained to notebooks which have been modified since their last export to PDF (not for time- or page set-stamped PDF file names).
  • To export a notebook to another app, either open the notebook and select ‘Export to X’ in the main menu (where ‘X’ indicates the pre-selected receiver app), or long-click on the notebook on the notebooks board and select ‘Export to X’ in the popup menu (requires the receiver app to be installed; cf. the app's export settings for pre-selecting the receiver app and for included material etc.; note that the optional PDF export is controlled by the PDF export setup).
  • To export a subset of notebook pages to another app, open the notebook in notebook overview, tag the desired pages, and select ‘Export tagged pages to X’ in the main menu (where ‘X’ indicates the pre-selected receiver app, requires the receiver app to be installed). To export notebook pages that contain a keyword, select ‘Notebook index’ or ‘Notebooks board index’ in the main menu and click on ‘(tag pages)’ next to the keyword, this will open the notebook overview with the corresponding pages tagged.
  • To export the visible layers (and only those) to another app, select ‘include visible layers’ in the export setup in the app's export settings.
  • To export a subset of layers to another app, select the desired layers in the export setup in the app's export settings.
  • To quickly export single notebook pages to another app, enable the single page export items in the app's menu settings and select ‘Export page Y to X’ (where ‘X’ indicates the pre-selected receiver app and ‘Y’ indicates the current page) in the main menu.
  • To export all notebooks of a folder to another app, including notebooks in subfolders, either open the folder on the notebooks board and select ‘Export folder to X’ in the main menu (where ‘X’ indicates the pre-selected receiver app), or long-click on the folder on the notebooks board and select ‘Export to X’ in the popup menu. The export can be constrained to notebooks which have been modified since their last export (requires the receiver app to be installed).
  • To export all notebooks to another app, select ‘Export notebooks board to X’ in the notebooks board main menu (where ‘X’ indicates the pre-selected receiver app, requires the receiver app to be installed).
  • To export a notebook to Evernote, either open the notebook and select ‘Export to Evernote’ in the main menu, or long-click on the notebook on the notebooks board and select ‘Export to Evernote’ in the popup menu (requires the Evernote app to be installed; cf. the app's export settings for included material etc.; note that the optional PDF export is controlled by the PDF export setup).
  • To export a subset of notebook pages to Evernote, open the notebook in notebook overview, tag the desired pages, and select ‘Export tagged pages to Evernote’ in the main menu (requires the Evernote app to be installed). To export notebook pages that contain a keyword, select ‘Notebook index’ or ‘Notebooks board index’ in the main menu and click on ‘(tag pages)’ next to the keyword, this will open the notebook overview with the corresponding pages tagged.
  • To export the visible layers (and only those) to Evernote, select ‘include visible layers’ in the Evernote export setup in the app's export settings.
  • To export a subset of layers to Evernote, select the desired layers in the Evernote export setup in the app's export settings.
  • To quickly export single notebook pages to Evernote, enable the single page export items in the app's menu settings and select ‘Export page X to Evernote’ (where ‘X’ indicates the current page) in the main menu.
  • To export all notebooks of a folder to Evernote, including notebooks in subfolders, either open the folder on the notebooks board and select ‘Export folder to Evernote’ in the main menu, or long-click on the folder on the notebooks board and select ‘Export to Evernote’ in the popup menu. The export can be constrained to notebooks which have been modified since their last export to Evernote (requires the Evernote app to be installed).
  • To export all notebooks to Evernote, select ‘Export notebooks board to Evernote’ in the notebooks board main menu (requires the Evernote app to be installed).
  • To export a notebook to OneNote, either open the notebook and select ‘Export to OneNote’ in the main menu, or long-click on the notebook on the notebooks board and select ‘Export to OneNote’ in the popup menu (requires the OneNote app to be installed; cf. the app's export settings for included material etc.; note that the optional PDF export is controlled by the PDF export setup).
    The OneNote app currently sets a limit of ten exported objects (corresponding to, for example, a limit of ten individual pages), which may change in the future. Until that time, and as an alternative to exporting individual pages, use the export as PDF function.
  • To export a subset of notebook pages to OneNote, open the notebook in notebook overview, tag the desired pages, and select ‘Export tagged pages to OneNote’ in the main menu (requires the OneNote app to be installed). To export notebook pages that contain a keyword, select ‘Notebook index’ or ‘Notebooks board index’ in the main menu and click on ‘(tag pages)’ next to the keyword, this will open the notebook overview with the corresponding pages tagged.
  • To export the visible layers (and only those) to OneNote, select ‘include visible layers’ in the OneNote export setup in the app's export settings.
  • To export a subset of layers to OneNote, select the desired layers in the OneNote export setup in the app's export settings.
  • To quickly export single notebook pages to OneNote, enable the single page export items in the app's menu settings and select ‘Export page X to OneNote’ (where ‘X’ indicates the current page) in the main menu.
  • To export all notebooks of a folder to OneNote, including notebooks in subfolders, either open the folder on the notebooks board and select ‘Export folder to OneNote’ in the main menu, or long-click on the folder on the notebooks board and select ‘Export to OneNote’ in the popup menu. The export can be constrained to notebooks which have been modified since their last export to OneNote (requires the OneNote app to be installed).
  • To export all notebooks to OneNote, select ‘Export notebooks board to OneNote’ in the notebooks board main menu (requires the OneNote app to be installed).
  • To annotate multiple images, combine the images in a single ZIP file (the order in the ZIP file determines the order of import), open notebook overview, select ‘Import image set as new pages’ in the main menu, and select the ZIP file (requires a file manager app to be installed for ZIP file selection; cf. the app's import settings for margins and alignment).
    It is advisable to use the app's multi-layer capabilities and import the to-be-annotated material into the first layer and put your annotations into the second layer, this allows for instance to erase your writing without interfering with the imported material. To access the app's multi-layer capabilities, the ‘layer’ icon needs to be enabled in the app's menu settings.
  • To annotate a PDF file, either
    1. import the PDF file page by page in notebook content view by selecting ‘Import PDF’ in the main menu,
    2. import multiple pages of the PDF file at once in notebook overview by selecting ‘Import PDF as new pages’ in the main menu, or
    3. create a new notebook on the notebooks board based on multiple pages of the PDF file by selecting ‘Import PDF as new notebook’ in the main menu (PDF import requires a file manager app to be installed for PDF file selection and PDFView for PDF rendering, cf. the app's import settings for PDF rendering resolution, margins, and alignment).
      It is advisable to use the app's multi-layer capabilities and import the to-be-annotated material into the first layer and put your annotations into the second layer, this allows for instance to erase your writing without interfering with the imported material. To access the app's multi-layer capabilities, the ‘layer’ icon needs to be enabled in the app's menu settings.
  • To automatically import images and PDF files into a specific layer (and automatically add layers to the notebook if needed), adjust the import target layer and the work layer after import in import image layer and import PDF layer setups in the app's import settings, respectively (PDF import requires a file manager app to be installed for PDF file selection and PDFView to be installed for PDF rendering).
  • The communication with PDFView (helper app required for PDF import) can be done via an AShMem interface or via files store in the file system (Android 6 or earlier only), where the former is significantly faster.
  • ‘Import image set as new pages’ require a file manager app to be installed for ZIP file selection; ‘Import PDF’, ‘Import PDF as new pages’, and ‘Import PDF as new notebook’ require a file manager app to be installed for PDF file selection and PDFView to be installed for PDF rendering; ‘Export to Evernote’ and ‘Export tagged pages to Evernote’ require the Evernote app to be installed; ‘Export to OneNote’ and ‘Export tagged pages to OneNote’ require the OneNote app to be installed.

Storage[]

  • If you encounter an ‘out of memory’ error message, you should try to use a smaller page cache and enable the corresponding option in the app's storage settings. Note that this is advisable for devices with small memory (RAM, not file system memory) only.
  • To use a larger page cache so that more pages (or more page layers) are simultaneously kept in memory, enable the corresponding option in the app's storage settings. Note that this is advisable for devices with large memory (RAM, not file system memory) only. If you encounter an ‘out of memory’ error message, you should disable this option.
  • The page in focus is kept in stacked form in an additional page buffer, so that scrolling and zooming does not slow down when adding additional layers. Note that this is not advisable for devices with small memory (RAM, not file system memory). If you encounter an ‘out of memory’ error message, you should disable this option in the app's storage settings.
  • If you are using a device with high resolution display (the larger resolution being larger than 1500 pixels), consider to enable the option ‘use fast page rendering’ in the app's display settings. If this option is enabled, a faster but less accurate scheme is used to render notebook pages on the display. The difference will hardly be noticeable on a high resolution display (except for extreme zoom levels), but response to writing, scrolling, and zooming will significantly improve.
  • Changed pages are written to the file system in various occasions, such as scrolling away from the given page, bringing another app into foreground, etc., as well as additionally with an auto-save in regular time intervals, the frequency of which can be adjusted in the app's storage settings. Note that you can manually save changed pages using the corresponding item in the menu at the app's launcher icon as well.
  • To store your notebooks to a specific directory, set a custom app directory in the app's storage settings.
  • To write ZIP files (created upon sharing notebooks or folders or upon notebooks board backup) to a specific directory, set a custom ZIP directory in the app's storage settings. You can either store all files (i) in the named directory in a flat arrangement, (ii) using a directory structure like the one of the notebooks board including the (redundant) notebook or folder name, (iii) using a directory structure like the one of the notebooks board excluding the (redundant) notebook or folder name, or (iv) in a flat arrangement where the path becomes part of the file name (thereby replacing ‘/’ by ‘_’). For example, sharing the notebook ‘Notebook’ in folder ‘Subfolder’ in folder ‘Folder’ yields the ZIP file (i) ‘Notebook.zip’, (ii) ‘Folder/​Subfolder/​Notebook/​Notebook.zip’, (iii) ‘Folder/​Subfolder/​Notebook.zip’, and (iv) ‘Folder_​Subfolder_​Notebook.zip’ in the ZIP directory, respectively.
  • To write PDF files (created upon export to PDF) to a specific directory, set a custom PDF directory in the app's storage settings. You can either store all files (i) in the named directory in a flat arrangement, (ii) using a directory structure like the one of the notebooks board including the (redundant) notebook or folder name, (iii) using a directory structure like the one of the notebooks board excluding the (redundant) notebook or folder name, or (iv) in a flat arrangement where the path becomes part of the file name (thereby replacing ‘/’ by ‘_’). For example, exporting the notebook ‘Notebook’ in folder ‘Subfolder’ in folder ‘Folder’ to PDF yields the PDF file (i) ‘Notebook.pdf’, (ii) ‘Folder/​Subfolder/​Notebook/​Notebook.pdf’, (iii) ‘Folder/​Subfolder/​Notebook.pdf’, and (iv) ‘Folder_​Subfolder_​Notebook.pdf’ in the PDF directory, respectively.
  • To copy the notebooks board, for instance the one of the trial version to the full version (or after changing the app directory in the full version), select ‘Backup notebooks board’ in the trial version (or with the old app directory set), start the full version (change the app directory to the new value and restart the app), select ‘Restore notebooks board’ and select the previously created ZIP file ‘LectureNotesNotebooksBoard.zip’ in the trial version app or ZIP directory (or in the old app or ZIP directory).
  • ‘Restore notebooks board’ requires a file manager app to be installed for ZIP file selection.
  • The usage of many individual files to store notebook pages is ideal for syncing your notes with a cloud service. To do so, set the app directory to a place in your file system that gets automatically synced by the syncing app of your favorite cloud service, or set up such syncing specifically for the app directory. Doing that on several devices will keep the devices synced as well. Note that it is important that the syncing app that you use handles file renaming properly; some syncing apps do not do that with the default setup.

Custom paper patterns and drawing tools[]

Definitions[]

The app allows custom paper patterns and drawing tools coded in JavaScript. Besides the standard JavaScript commands, the following additional ones are available:

(String) LN.getPath() returns the notebook's path
(String) LN.getName() returns the notebook's name
(Number) LN.getCreationDate() returns the notebook's creation date in milliseconds since January 1, 1970 00:00:00.0 UTC (use JavaScript's Date object to convert to a human-readable form)
(String) LN.getUUID() returns the notebooks's UUID
(Number) LN.getNumberOfPages() returns the notebook's number of pages
(Number) LN.getPage() returns the current page
(Number) LN.getPageCreationDate() returns the current page's creation date in milliseconds since January 1, 1970 00:00:00.0 UTC (use JavaScript's Date object to convert to a human-readable form)
(String) LN.getPageUUID() returns the current page's UUID
(Number) LN.getX() returns the current page's left boundary (which is always 0)
(Number) LN.getY() returns the current page's upper boundary (which is always 0)
(Number) LN.getWidth() returns the current page's width
(Number) LN.getHeight() returns the current page's height
(Number) LN.getX1() returns the selection's start x coordinate (which is 0 in case of a paper pattern)
(Number) LN.getY1() returns the selection's start y coordinate (which is 0 in case of a paper pattern)
(Number) LN.getX2() returns the selection's end x coordinate (which is the page width in case of a paper pattern)
(Number) LN.getY2() returns the selection's end y coordinate (which is the page height in case of a paper pattern)
(Number) LN.getScale() returns the pattern scale (as adjusted with slider, ranging from 0 to 1.5, where 0 and 1.5 correspond to 0% and to 100%, respectively)
(Number) LN.getNumberOfKeywords() returns the number of keywords kmax
(String) LN.getKeyword(Number k) returns keyword 1 ≤ k ≤ kmax
(Number) LN.getNumberOfParameters() returns the number of parameters pmax (which is 0 in case of a paper pattern)
(Number) LN.getParameter(Number p) returns parameter 1 ≤ p ≤ pmax (the value 0 is returned for string parameters)
(String) LN.getStringParameter(Number p) returns parameter string 1 ≤ p ≤ pmax (an empty string is returned for a numerical parameter)
(Number) LN.getMode() returns the current mode (0 indicates normal display, 1 indicates thumbnail, 2 indicates export, and 3 indicates widget for paper pattern; 0 indicates final drawing and 1 indicates temporary drawing for a drawing tool)
(Number) LN.getStrokeWidth() returns the current stroke width sw > 0
LN.setStrokeWidth(Number sw) sets the stroke width to sw > 0 (initial stroke width is 1 for a paper pattern and the pencil stroke width for a drawing tool)
(Number) LN.getStrokeCap() returns the current stroke cap, 0 corresponds to round, 1 to butt (flat), and 2 to square
LN.setStrokeCap(Number sc) sets the stroke cap to sc, 0 corresponds to round, 1 to butt (flat), and 2 to square (initial stroke cap is round for a paper pattern and is the pencil stroke cap for a drawing tool)
LN.setDashing() sets the dashing to none (initital dashing is none)
LN.setDashing(Number df, Number de) sets the dashing to full df > 0 and empty de > 0 (initital dashing is none)
LN.setDashing(Number df1, Number de1, Number df2, Number de2) sets the dashing to full df1 > 0, empty de1 > 0, full df2 > 0, and empty de2 > 0 (initital dashing is none)
(Number) LN.getRed() returns the current color's red component 0 ≤ r ≤ 1
(Number) LN.getGreen() returns the current color's green component 0 ≤ g ≤ 1
(Number) LN.getBlue() returns the current color's blue component 0 ≤ b ≤ 1
LN.setColor() sets the color to the initial color (the color chosen in the dialog for a paper pattern and the pencil color for a drawing tool)
LN.setColor(Number r, Number g, Number b) sets the color to red 0 ≤ r ≤ 1, green 0 ≤ g ≤ 1, and blue 0 ≤ b ≤ 1 (initial color is the one chosen in the dialog for a paper pattern and the pencil color for a drawing tool)
LN.setColor(Number a, Number r, Number g, Number b) sets the color to red 0 ≤ r ≤ 1, green 0 ≤ g ≤ 1, and blue 0 ≤ b ≤ 1 with opacity 0 ≤ a ≤ 1 (initial color is the one chosen in the dialog with full opacity for a paper pattern and the pencil color for a drawing tool)
(Number) LN.getAlpha() returns the current color's opacity 0 ≤ a ≤ 1
LN.setAlpha() sets the opacity to the initial opacity (full opacity for a paper pattern and the pencil opacity for a drawing tool)
LN.setAlpha(Number a) sets the opacity to 0 ≤ a ≤ 1 (initial opacity is full for a paper pattern and the pencil opacity for a drawing tool)
(Number) LN.getSoftness() returns the softness 0 ≤ s ≤ 1 (not available for paper patterns)
LN.setSoftness(Number s) sets the softness to 0 ≤ s ≤ 1; use this command only if you have to, and call only once, as only the last call is considered (initial softness is the pencil softness, not available for paper patterns)
(Boolean) LN.getDrawBehindOtherColors() returns whether to draw behind other colors (not available for paper patterns)
LN.setDrawBehindOtherColors(Boolean db) sets to draw behind other colors if db is true or to draw in front of other colors if db is false; use this command only if you have to, and call only once, as only the last call is considered (initial value is the pencil's value, not available for paper patterns)
LN.drawPoint(Number xp, Number yp) draws a point at (xp,yp) with diameter given by the stroke width
LN.drawLine(Number x1, Number y1, Number x2, Number y2) draws a line from (x1,y1) to (x2,y2) with line thickness given by the stroke width
LN.drawRect(Number x1, Number y1, Number x2, Number y2) draws a rectangle from (x1,y1) to (x2,y2) with line thickness given by the stroke width
LN.drawFilledRect(Number x1, Number y1, Number x2, Number y2) draws a filled rectangle from (x1,y1) to (x2,y2)
LN.drawCircle(Number xc, Number yc, Number r) draws a circle centered at (xc,yc) of radius r > 0 with line thickness given by the stroke width
LN.drawFilledCircle(Number xc, Number yc, Number r) draws a filled circle centered at (xc,yc) of radius r > 0
LN.drawOval(Number xc, Number yc, Number r1, Number r2) draws an oval centered at (xc,yc) of radii r1 > 0 and r2 > 0 with line thickness given by the stroke width
LN.drawFilledOval(Number xc, Number yc, Number r1, Number r2) draws a filled oval centered at (xc,yc) of radii r1 > 0 and r2 > 0
LN.drawArc(Number xc, Number yc, Number r, Number a, Number as) draws an arc centered at (xc,yc) of radius r > 0 between angles a and a+as (measured clockwise in radian) with line thickness given by the stroke width
LN.drawArc(Number xc, Number yc, Number r1, Number r2, Number a, Number as) draws an arc centered at (xc,yc) of radii r1 > 0 and r2 > 0 between angles a and a+as (measured clockwise in radian) with line thickness given by the stroke width
LN.drawFilledArc(Number xc, Number yc, Number r, Number a, Number as) draws a filled arc (a wedge) centered at (xc,yc) of radius r > 0 between angles a and a+as (measured clockwise in radian)
LN.drawFilledArc(Number xc, Number yc, Number r1, Number r2, Number a, Number as) draws a filled arc (a wedge) centered at (xc,yc) of radii r1 > 0 and r2 > 0 between angles a and a+as (measured clockwise in radian)
LN.drawTriangle(Number x1, Number y1, Number x2, Number y2, Number x3, Number y3) draws a triangle with corners (x1,y1), (x2,y2), and (x3,y3) with line thickness given by the stroke width
LN.drawFilledTriangle(Number x1, Number y1, Number x2, Number y2, Number x3, Number y3) draws a filled triangle with corners (x1,y1), (x2,y2), and (x3,y3)
LN.drawQuadrangle(Number x1, Number y1, Number x2, Number y2, Number x3, Number y3, Number x4, Number y4) draws a quadrangle (tetragon) with corners (x1,y1), (x2,y2), (x3,y3), and (x4,y4) with line thickness given by the stroke width
LN.drawFilledQuadrangle(Number x1, Number y1, Number x2, Number y2, Number x3, Number y3, Number x4, Number y4) draws a filled quadrangle (tetragon) with corners (x1,y1), (x2,y2), (x3,y3), and (x4,y4)
(Number) LN.getTextFamily() returns the current text family, 0 corresponds to sans-serif, 1 to serif, and 2 to monospace
LN.setTextFamily(Number tf) sets the text family to tf, 0 corresponds to sans-serif, 1 to serif, and 2 to monospace, and sets the text style to normal, i.e. neither italic, bold, nor underline (initial text family is sans-serif)
(Boolean) LN.getTextItalic() returns whether the current text style is italic
(Boolean) LN.getTextBold() returns whether the current text style is bold
(Boolean) LN.getTextUnderline() returns whether the current text style is underline
LN.setTextItalic(Boolean ti) sets the text style to italic if ti is true or to not italic if ti is false (initial text style is normal, i.e. not italic)
LN.setTextBold(Boolean tb) sets the text style to bold if tb is true or to not bold if tb is false (initial text style is normal, i.e. not bold)
LN.setTextStyle(Boolean ti, Boolean tb) sets the text style to italic if ti is true or to not italic if ti is false, and to bold if tb is true or to not bold if tb is false (initial text style is normal, i.e. neither italic nor bold)
LN.setTextUnderline(Boolean tu) sets the text style to underline if tu is true or to not underline if tu is false (initial text style is normal, i.e. not underline)
(Number) LN.getTextSize() returns the current text size ts > 0
LN.setTextSize(Number ts) sets the text size to ts > 0 (initial text size is 1)
(Number) LN.getTextAlign() returns the current text alignment, -1 corresponds to right, 0 to center, and 1 to left
LN.setTextAlign(Number ta) sets the text alignment to ta, -1 corresponds to right, 0 to center, and 1 to left (initial alignment is left)
(Number) LN.getTextWidth(String tt) returns the width of the text tt
LN.drawText(String tt, Number xt, Number yt) draws the text tt at (xt,yt)
LN.drawRuledPattern(Number ps, Boolean sp) draws the standard pattern ‘ruled’ with scale ps, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number ps, Number sw, Boolean sp) draws the standard pattern ‘ruled’ with scale ps and line thickness sw, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘ruled’ with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘ruled’ with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number ps, Number left, Number top, Number right, Number bottom) draws the standard pattern ‘ruled’ with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawRuledPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘ruled’ on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number x, Number y, Number width, Number height, Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘ruled’ on a page of size (width,height) located at (x,y) with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRuledPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom) draws the standard pattern ‘ruled’ on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawCheckeredPattern(Number ps, Boolean sp) draws the standard pattern ‘checkered’ with scale ps, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number ps, Number sw, Boolean sp) draws the standard pattern ‘checkered’ with scale ps and line thickness sw, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘checkered’ with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘checkered’ with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number ps, Number left, Number top, Number right, Number bottom) draws the standard pattern ‘checkered’ with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawCheckeredPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘checkered’ on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number x, Number y, Number width, Number height, Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws the standard pattern ‘checkered’ on a page of size (width,height) located at (x,y) with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawCheckeredPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom) draws the standard pattern ‘checkered’ on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawRectanglePattern(Number vps, Number hps, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern with vertical scale vps and horizontal scale hps, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number vps, Number hps, Number sw, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern with vertical scale vps, horizontal scale hps, and line thickness sw, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number vps, Number hps, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern with vertical scale vps and horizontal scale hps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number vps, Number hps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern with vertical scale vps, horizontal scale hps, and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number ps, Number left, Number top, Number right, Number bottom) draws a ‘rectangle’ (asymmetric graph) pattern with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawRectanglePattern(Number x, Number y, Number width, Number height, Number vps, Number hps, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern on a page of size (width,height) located at (x,y) with vertical scale vps and horizontal scale hps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number x, Number y, Number width, Number height, Number vps, Number hps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘rectangle’ (asymmetric graph) pattern on a page of size (width,height) located at (x,y) with vertical scale vps, horizontal scale hps, and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawRectanglePattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom) draws a ‘rectangle’ (asymmetric graph) pattern on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawDottedPattern(Number ps, Boolean sp) draws a ‘dotted’ pattern with scale ps, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number ps, Number sw, Boolean sp) draws a ‘dotted’ pattern with scale ps and line thickness sw, including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘dotted’ pattern with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘dotted’ pattern with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number ps, Number left, Number top, Number right, Number bottom) draws a ‘dotted’ pattern with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.drawDottedPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘dotted’ pattern on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number x, Number y, Number width, Number height, Number ps, Number sw, Number left, Number top, Number right, Number bottom, Boolean sp) draws a ‘dotted’ pattern on a page of size (width,height) located at (x,y) with scale ps and line thickness sw, constrained to the rectangle (left, top, right, bottom), including page number if sp is true, using the color chosen in the dialog (not available for drawing tools)
LN.drawDottedPattern(Number x, Number y, Number width, Number height, Number ps, Number left, Number top, Number right, Number bottom) draws a ‘dotted’ pattern on a page of size (width,height) located at (x,y) with scale ps, constrained to the rectangle (left, top, right, bottom), with color given by the current color and line thickness given by the stroke width
LN.setClip(Number left, Number top, Number right, Number bottom) sets the clipping to the rectangle (left, top, right, bottom), deviating from the normal clipping given by the drawing tool selection; use this command only if you have to draw outside the drawing tool selection, and if so, use a maximally tight clipping rectangle and call only once, as only the last call is considered (not available for paper patterns)

Note that that your drawing commands are clipped to the current page dimensions, that commenting has to be done using ‘/* comment */’ (commenting using ‘//’ does not work), that your JavaScript code has to finish within 400 ms (so it is advisable not to add comments at all as they slow down execution), and that with great power comes great responsibility.

If you see the message ‘Evaluation of custom paper pattern JavaScript code takes too long, aborted’ or ‘Evaluation of custom drawing tool JavaScript code takes too long, aborted’, then you JavaScript code either took longer than 400 ms to execute or contains an error.

Examples[]

As a first example of a custom paper pattern, the following JavaScript code provides standard ‘checkered’ pattern on all pages, except for page 2, 4, and 6 for which ‘ruled’ standard pattern is used, and for page 8 which is left ‘plain’:

page = LN.getPage(); get current page
switch (page) { distinguish according to page
default: default behavior
scale = LN.getScale(); get pattern scale
LN.drawCheckeredPattern(scale, false); ‘checkered’ pattern with pattern scale and without page information
break;
case 2: case 4: case 6: behavior for page 2, 4, and 6
LN.drawRuledPattern(0.3, true); ‘ruled’ pattern with fixed pattern scale 0.3 and with page information
break;
case 8: behavior for page 8
break; leave ‘plain’
}

As a second example of a custom paper pattern, the following JavaScript code provides a so-called isometric pattern:

width = LN.getWidth(); get current page width
height = LN.getHeight(); get current page height
scale = LN.getScale(); get pattern scale
step = width / 150 + scale * width / 25; calculate step size dependent on pattern scale
LN.setStrokeWidth(0.0001 * width); set stroke width to 1/1000 of page width
for (x = 0; x < width; x += step) loop over all vertical lines
LN.drawLine(x, 0, x, height); draw line
stepX = 2 * step; calculate horizontal step size
stepY = 1.1547 * step; calculate vertical step size (1.1547 ≈ 2/sqrt(3))
x1 = 0; y1 = stepY; first initial point
x2 = stepX; y2 = 0; second initial point
while ((x1 < width) && (y2 < height)) { loop over all skewed lines (first part)
LN.drawLine(x1, y1, x2, y2); draw line
if (y1 < height) within height?
y1 += stepY; move first point down
else otherwise
x1 += stepX; move first point right
if (x2 < width) within width?
x2 += stepX; move second point right
else otherwise
y2 += stepY; move second point down
}
x1 = x2 - stepX; y1 = 0; first initial point (x2 from first part)
y2 = stepY; second initial point (x2 from first part)
while ((x2 > 0) && (y1 < height)) { loop over all skewed lines (second part)
LN.drawLine(x1, y1, x2, y2); draw line
if (x1 > 0) within width?
x1 -= stepX; move first point left
else otherwise
y1 += stepY; move first point down
if (y2 < height) within height?
y2 += stepY; move second point down
else otherwise
x2 -= stepX; move second point left
}

As a third example of a custom drawing tool, the following JavaScript code provides a dashed line:

width = LN.getWidth(); get current page width
height = LN.getHeight(); get current page height
size = Math.min(width, height); determine size (minimum of page width and height)
strokewidth = LN.getStrokeWidth(); get stroke width
dashing1 = 0.005 * size; choose dashing (full part)
dashing2 = (LN.getStrokeCap() == 1) ? dashing1 : dashing1 + 2 * strokewidth; choose dashing (empty part, consider stroke width in case stroke cap is not butt (flat))
x1 = LN.getX1(); get selection's start x coordinate
y1 = LN.getY1(); get selection's start y coordinate
x2 = LN.getX2(); get selection's end x coordinate
y2 = LN.getY2(); get selection's end y coordinate
LN.setDashing(dashing1, dashing2); set dashing
LN.drawLine(x1, y1, x2, y2); draw line

Storage[]

The app uses an app directory in the file system on the media/​shared/​external storage to store files. It either uses the app's ‘external files directory’ as default app directory (this directory will also be used if the app encounters a problem with the custom app directory) or a custom app directory.

For each folder a subdirectory carrying the folders's name is created, and the folders's content is stored in this subdirectory: Some internal information is kept in a file ‘folder.xml’ and folders or notebooks are kept in directories.

For each notebook a subdirectory carrying the notebook's name is created in the folder directory, and the notebook's content is stored in this subdirectory: Some internal information is kept in a file ‘notebook.xml’, a background image is kept in a file ‘image.png’, custom paper pattern JavaScript code is kept in a file ‘custompaper.js’, and the individual pages in files named ‘page[PAGE].png’ for the first layer and ‘page[PAGE]_[LAYER].png’ for any further layer, ‘text[PAGE].txt’, ‘text[PAGE].style’, ‘text[PAGE]_[FIELD].txt’, ‘text[PAGE]_[FIELD].style’, and ‘text[PAGE]_[FIELD].box’ for typed text and assigned styles and boxes, and ‘thumbnail.png’ and ‘thumbnail[PAGE].png’ for notebooks board and notebook overview thumbnails, where ‘[PAGE]’ denotes the page number, ‘[LAYER]’ denotes the layer number, and ‘[FIELD]’ denotes the field number.

Global information such as the selections ‘selection.png’ and ‘selection.zip’, the camera image ‘camera.jpg’, and the shared individual page ‘page.png’ are kept in the app directory.

Note that Android routinely removes all app files and settings when an app is uninstalled, this also applies to LectureNotes' folders and notebooks.

Permissions[]

LectureNotes
LectureNotes requests the following permission

  • WRITE_EXTERNAL_STORAGE/​READ_EXTERNAL_STORAGE (or colloquially ‘Storage’) allows LectureNotes to write to and to read from the file system on the media/​shared/​external storage.
    This permission is required if you wish to use LectureNotes' full functionality; you can revoke this permission on devices running Android 6.0 or later if you use LectureNotes' standard app directory, standard PDF directory, and standard ZIP directory, and if you do not mind that some functions (functions that require LectureNotes to read from or write to the file system at other locations) do not work.

Import PDF: PDFView
PDFView requests the following permissions

  • WRITE_EXTERNAL_STORAGE/​READ_EXTERNAL_STORAGE (or colloquially ‘Storage’) allows PDFView to write to and to read from the file system on the media/​shared/​external storage.
    This permission is required on devices running older Android versions. You can revoke this permission on devices running Android 7.0 or later; you can revoke this permission on devices running Android 6.0 if you use PDFView from LectureNotes via the AShMem interface (cf. LectureNotes' import settings).
  • FOREGROUND_SERVICE allows PDFView to become a foreground service while rendering.
    This is a minor permission which cannot be revoked on devices running Android 9 or later.

Extension: LectureRecordings
LectureRecordings requests the following permissions

  • RECORD_AUDIO (or colloquially ‘Microphone’) allows LectureRecordings to access the device microphone.
    This permission is strictly required to record audio; if you do not grant this permission on devices running Android 6.0 or later, audio recording will not be possible. If you grant this permission, access to the microphone is limited to the duration of the recordings made by you.
  • WRITE_EXTERNAL_STORAGE/​READ_EXTERNAL_STORAGE (or colloquially ‘Storage’) allows LectureRecordings to write to and to read from the file system on the media/​shared/​external storage.
    This permission is required on devices running older Android versions. You can revoke this permission on devices running Android 6.0 or later if you use LectureRecordings from LectureNotes.
  • FOREGROUND_SERVICE allows LectureRecordings to become a foreground service while recording.
    This is a minor permission which cannot be revoked on devices running Android 9 or later.

Extension: LectureVideos (requires Android 4.1 or later)
LectureVideos requests the following permissions

  • RECORD_AUDIO (or colloquially ‘Microphone’) allows LectureVideos to access the device microphone.
    This permission is strictly required to record audio; if you do not grant this permission on devices running Android 6.0 or later, video recording will not be possible. If you grant this permission, access to the microphone is limited to the duration of the video recordings made by you.
  • WRITE_EXTERNAL_STORAGE/​READ_EXTERNAL_STORAGE (or colloquially ‘Storage’) allows LectureVideos to write to and to read from the file system on the media/​shared/​external storage.
    This permission is required on devices running older Android versions. You can revoke this permission on devices running Android 6.0 or later.
  • RECEIVE_BOOT_COMPLETED allows LectureVideos to receive a notification after boot is completed and to start its service.
    This is a minor permission which cannot be revoked on devices running Android 6.0 or later.
  • FOREGROUND_SERVICE allows LectureVideos to become a foreground service while recording.
    This is a minor permission which cannot be revoked on devices running Android 9 or later.

Extension: LecturePresentations (requires Android 4.2 or later)
LecturePresentations requests the following permissions

  • SYSTEM_ALERT_WINDOW (or colloquially ‘Overlay’) allows LecturePresentations to access the secondary display.
    This permission is strictly required to show a presentation; if you do not grant this permission on devices running Android 6.0 or later, presentation will not be possible.
  • RECEIVE_BOOT_COMPLETED allows LecturePresentations to receive a notification after boot is completed and to start its service.
    This is a minor permission which cannot be revoked on devices running Android 6.0 or later.
  • FOREGROUND_SERVICE allows LecturePresentations to become a foreground service while presenting.
    This is a minor permission which cannot be revoked on devices running Android 9 or later.
Advertisement